ファイルのタイムスタンプを設定するには、SetFileTime関数を使います。対象がディレクトリの場合は、CreateFile関数でファイルハンドルを取得する際、引数のセキュリティ属性にFILE_FLAG_BACKUP_SEMANTICSを加える必要があります。例えば、次のようにします。
//---------------------------------------------------------------------------
bool __fastcall SetFileTimes(AnsiString AFilePath, const FILETIME* ACreationTime, const FILETIME* ALastWriteTime, const FILETIME* ALastAccessTime)
{
HANDLE fileHandle = CreateFile(
AFilePath.c_str(),
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | (DirectoryExists(AFilePath) ? | FILE_FLAG_BACKUP_SEMANTICS : 0),
NULL);
if(fileHandle == INVALID_HANDLE_VALUE) {
return false;
}
try {
if(!SetFileTime(fileHandle, ACreationTime, ALastAccessTime, ALastWriteTime)) {
return false;
}
}
__finally {
CloseHandle(fileHandle);
}
return true;
}
//---------------------------------------------------------------------------
FATファイルシステムでは、ディレクトリのタイムスタンプを変更することはできません。