ファイル時刻を現在の時刻に変更する

次の例では、 SetFileTime 関数を使用して、ファイルの最終書き込み時刻を現在のシステム時刻に設定します。

NTFS ファイル システムは UTC 形式で時刻値を格納するため、タイム ゾーンや夏時間の変更の影響を受けません。 FAT ファイル システムは、コンピューターの現地時刻に基づいて時刻値を格納します。

ファイルは、FILE_WRITE_ATTRIBUTESアクセスを使用して CreateFile 関数で開く必要があります。

#include <windows.h>

// SetFileToCurrentTime - sets last write time to current system time
// Return value - TRUE if successful, FALSE otherwise
// hFile  - must be a valid file handle

BOOL SetFileToCurrentTime(HANDLE hFile)
{
    FILETIME ft;
    SYSTEMTIME st;
    BOOL f;

    GetSystemTime(&st);              // Gets the current system time
    SystemTimeToFileTime(&st, &ft);  // Converts the current system time to file time format
    f = SetFileTime(hFile,           // Sets last-write time of the file 
        (LPFILETIME) NULL,           // to the converted current system time 
        (LPFILETIME) NULL, 
        &ft);    

    return f;
}