自己写了一些函数来获得和修改文件的时间。
1. 获得文件的时间:
函数 GetFileTimeInfo
TCHAR tszDebug_FInf[MAX_PATH] = {0};
BOOL GetFileTimeInfo(WIN32_FIND_DATA* pFileData, const TCHAR *ptszFileName)
{
BOOL brtnInf = TRUE;
HANDLE hFind = NULL;
hFind = FindFirstFile(ptszFileName, pFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
_stprintf_s(tszDebug_FInf, MAX_PATH, TEXT("FindFirstFile %s fail at %d\r\n"), ptszFileName, GetLastError ());
OutputDebugString(tszDebug_FInf);
brtnInf = FALSE;
}
if (hFind)
{
FindClose(hFind);
}
if (brtnInf)
{
OutputDebugString(TEXT("GetFileTimeInfo sucess~~\r\n"));
}
return brtnInf;
}
2. 修改系统时间(需要管理员权限)
TCHAR tszDebug_FInf[MAX_PATH] = {0};
BOOL SetFileTimeInfo(const TCHAR *ptszFileName, const FILETIME* lpCreationTime, const FILETIME* lpLastAccessTime, const FILETIME* lpLastWriteTime)
{
BOOL brtnInf = TRUE;
HANDLE hFile = NULL;
hFile = CreateFile(ptszFileName, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
_stprintf_s(tszDebug_FInf, MAX_PATH, TEXT("CreateFile fail at %d\r\n"), GetLastError ());
OutputDebugString(tszDebug_FInf);
brtnInf = FALSE;
goto END_RETURN;
}
BOOL bres = SetFileTime(hFile, lpCreationTime, lpLastAccessTime, lpLastWriteTime);
if (!bres)
{
_stprintf_s(tszDebug_FInf, MAX_PATH, TEXT("SetFileTime fail at %d\r\n"), GetLastError ());
OutputDebugString(tszDebug_FInf);
brtnInf = FALSE;
}
END_RETURN:
if (hFile)
{
CloseHandle(hFile);
}
if (brtnInf)
{
OutputDebugString(TEXT("SetFileTimeInfo sucess~~\r\n"));
}
return brtnInf;
}
3. 用法:(Windows2 console sample)
#include "stdafx.h"
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR tszFileName[MAX_PATH] = TEXT("C:\\Program Files\\ASUS\\Startup Page\\StartPage.exe");
WIN32_FIND_DATA FindFileData;
FILETIME LastWFileTime;
LastWFileTime.dwLowDateTime = 1111;
LastWFileTime.dwHighDateTime = 2000;
BOOL bres = SetFileTimeInfo(tszFileName, NULL, NULL, &LastWFileTime);
if (!bres)
{
return 0;
}
bres = GetFileTimeInfo(&FindFileData, tszFileName);
if (!bres)
{
return 0;
}
return 0;
}
//可以查看FindFileData的值来获得你想要的时间。