000
29.02.2012, 04:18 Uhr
Hans
Library Walker (Operator)
|
Zitat von msdn: |
Changing a File Time to the Current Time The following example sets the last-write time for a file to the current system time using the SetFileTime function. ... The file must be opened with the CreateFile function using FILE_WRITE_ATTRIBUTES access.
|
Soweit, so schön. Nur wenn man dem Link folgt, dann findet man in dem Beitrag zu CreateFile nirgendwo einen Hinweis auf die FILE_WRITE_ATTRIBUTES bzw. nicht mal die Bezeichnung selbst. Oder hab ich da was falsch verstanden?
Ich hab das dort gegebene Beispiel gleich abgewandelt. Das Programm soll eine eigene Variante von Borland's TOUCH werden, womit man u.a. Datum und Urzeit von Dateien ändern kann. Der wesentliche Codeteil sieht so aus:
C++: |
WIN32_FIND_DATA ffd; SYSTEMTIME sysTime, MyDate; FILETIME fLastWriteTime; HANDLE hFile; HANDLE hFind = INVALID_HANDLE_VALUE; ... hFind = FindFirstFile(szDir, &ffd); ... do { ... hFile = CreateFile( ffd.cFileName, // name of the file GENERIC_READ | GENERIC_WRITE, // open for reading and writing 0, // do not share NULL, // default security OPEN_EXISTING, /* Datei öffnen wenn sie existiert */ FILE_ATTRIBUTE_NORMAL, // normal file NULL ); // no attr. template ... // Change the file time GetFileTime( hFile, NULL, NULL, &fLastWriteTime ); FileTimeToSystemTime( &fLastWriteTime, &sysTime); sysTime.wDay = MyDate.wDay; sysTime.wMonth = MyDate.wMonth; sysTime.wYear = MyDate.wYear; sysTime.wHour = MyDate.wHour; sysTime.wMinute = MyDate.wMinute; sysTime.wSecond = MyDate.wSecond; SystemTimeToFileTime( &sysTime, &fLastWriteTime); SetFileTime( hFile, NULL, NULL, &fLastWriteTime ); CloseHandle( hFile ); } while (FindNextFile(hFind, &ffd) != 0);
|
Das ganze funktioniert natürlich nicht so, wie es soll, denn im "WindoofExplodierer"... äh sorry, im WindowsExplorer haben die Dateien hinterher die selben Zeiten wie zuvor auch. Ich nehme an, dass es was mit den FILE_WRITE_ATTRIBUTES zu tun hat.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 29.02.2012 um 04:25 Uhr von Hans editiert. |