Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: FindFirst TSearchRec setzen

  Alt 13. Mai 2018, 10:57
CreationTime wird IMHO niemals von einer WinAPI kopiert,
wenn die Datei irgendwo neu erstellt wird.

Beim MoveFile innerhalt der selben Partition gibt es eine Ausnahme, denn dabei wird nicht die Datei, sondern nur ihr Verzeichniseintrag bearbeitet.


Was das LastAccess-Datum betrifft, da könnte man sich streiten und ich weiß es jetzt auch nicht, aber da für den Kopiervorgang auf die originale Datei zugegriffen werden muß, so besteht nunmal ein Zugriff (LastAccess) und ich wäre nicht überrascht wenn sich diese Datum ändert.



Beim LastWrite könnte man nun sagen, dass die Datei eigentich neu beschrieben wird und sich somit das Datum ändern müsste, aber wenn man einfach bedenkt, dass "LastWrite" eigentlich mehr sowas wie letzte Änderung des Dateiinhaltes bedeudet, dann wird eher klar, warum diese Copy-APIs dieses Datum nach dem Erstellen der Kopie zurück setzen.


Mein Vorschlag wäre auch, dass mit CopyFileEx oder Dergleichen erstmal kopiert und dann anschließend die gewünschten Daten/Attribute nochmal gesetzt werden.
GetFileTime SetFileTime ... allerdings ohne unnötiges zwischenzeitliches Umwandeln der Zeitangaben, also einfach die 3 Werte direkt übergeben
GetFileAttributes SetFileAttributes

dwReserved0, dwReserved1 das kannst du vergessen, denn das sind keine Werte.

Und wenn es um Verschlüsselung oder Komprimierung geht, entweder schauen dass die genutzte WinAPI das mit kopiert.
Gerade bei Diesem und den Rechten nimmt CopyFile/CopyFileEx wohl oftmals nichts mit und übernimmt die Vorgaben des Zielverzeichnisses,
aber MSDN-Library durchsuchenSHFileOperation wäre dann eine Überlegung wert, da dieses teilweise mehr macht, zumindestens die Berechtigungen sollten da mitgenommen werden können.
$2B or not $2B

Geändert von himitsu (13. Mai 2018 um 10:59 Uhr)
  Mit Zitat antworten Zitat