![]() |
SetFileTime und "letzter Zugriff"
Hallo, ich hab ein kleines Problem. Ich brauche ein Prog, mit den ich Dateizeit und Zeit des PE-Headers verändern kann.
Hab mir schnell was geschrieben und es funzt auch. Mit einer Ausnahme: die Zeit des letzten Zugriffs ist alsch und ich habe keine Ahnung warum...
Delphi-Quellcode:
Wäre für Hilfe dankbar...
Procedure TForm1.TntBitBtn1Click(Sender : TObject);
Function SetFileDateTime(FileName : String;NewDateTime : TDateTime) : Boolean; Var FileHandle : Integer; FileTime : TFileTime; LFT : TFileTime; LST : TSystemTime; Begin Result:=False; Try DecodeDate(NewDateTime, LST.wYear, LST.wMonth, LST.wDay); DecodeTime(NewDateTime, LST.wHour, LST.wMinute, LST.wSecond, LST.wMilliSeconds); If SystemTimeToFileTime(LST, LFT) Then Begin If LocalFileTimeToFileTime(LFT, FileTime) Then Begin FileHandle:=FileOpen(FileName, fmOpenReadWrite Or fmShareExclusive); Result:=SetFileTime(FileHandle, @FileTime, @FileTime, @FileTime); End; End; Finally FileClose(FileHandle); End; End; Procedure UpdateLinkerTimeStamp(Const FileName : String;Const Time : TDateTime); Var LI : _LOADED_IMAGE; //TLoadedImage; Begin Win32Check(MapAndLoad(PChar(FileName), Nil, @LI, False, False)); LI.FileHeader.FileHeader.TimeDateStamp:=Round((Time - 25569 {entspr. UnixDateDelta}) * SecsPerDay); UnMapAndLoad(@LI); End; Begin With tOpenDialog.Create(Application) Do Begin DefaultExt:= '*.exe'; Filter:= 'Programmdateien|*.exe'; FilterIndex:=0; If Execute Then Begin UpdateLinkerTimeStamp(Filename, DatetimePicker.Date); SetFileDateTime(Filename, DatetimePicker.Date); End Else Exit; Free; End; close; End; |
Re: SetFileTime und "letzter Zugriff"
Alle 3 Zeiten müssten doch anschließend gleich sein, oder irre ich mich?
|
Re: SetFileTime und "letzter Zugriff"
Leider ist das nicht der Fall, "Letzter Zugriff" steht auf dem heutigen Datum. Hatte schon gedacht, dass das durch das Fileclose noch geändert wird, aber dafür stimmt dann die Uhrzeit nicht.
|
Re: SetFileTime und "letzter Zugriff"
Hallo,
Zitat:
Stephan |
Re: SetFileTime und "letzter Zugriff"
Hab noch ein wenig probiert, bei einigen Dateien ist das dann wirklich die Zeit, nach dem Ausführen des Progs. Bei einer anderen 25 Minuten früher.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz