Sådan flyttes en fil i Windows uden at ændre moderselskabets modifikationstid (Win32)?

Indlæg af Hanne Mølgaard Plasc

Problem



Det ser ud til, at når du flytter/kopierer en fil fra en kildemappe til en bestemt destinationsmappe, har Windows en tendens til at ændre overordnet mappe ændringstid.


For en kopi ændrer den destinationens modersmap modifikationstid til nu.


For et skridt ser det ud til, at det ændrer både kildeens overordnede mappe og destinationens moderselskabs modifikationstid indtil nu.


Dette er på NTFS.


Jeg antager, at dette skyldes, at NTFS opdaterer katalogindeksposterne i mappens metadata.


Hvordan ville du kopiere eller flytte en fil i Windows uden at ændre kilde/destinationsforældremappeens modifikationstid ved hjælp af Win32 API?

Bedste reference


SetFileInformationByHandle skal give dig mulighed for at sætte ændringstiden tilbage, som du fandt det. Du kan bruge transaktioner, hvis det er nødvendigt for at undgå risikoen for overlappende ændringer, der ødelægger dette. [1]


Jeg tror dog, at du kun kan ændre tidsstemplerne på en mappe, hvis du har SE\_RESTORE privilegier aktiveret, så du skal køre som administrator. (BEMÆRK: Dette er ikke , fordi du skal angive FILE\_FLAG\_BACKUP\_SEMANTICS til CreateFile for at få et kataloghåndtag, du kan gøre det uden særlige privilegier.)


Det ville nok være mere hensigtsmæssigt at løse problemet i den anden ende, dvs. at fastsætte, uanset hvilken kode eller procedure der bliver forstyrret af ændringstiden, der ændrer sig. Når alt kommer til alt, ændres ændringstiden for en mappe til , når indholdet i mappen ændres - det er det, det er der for!