如何在C中获取文件创建日期?我看到函数getFileTime
,但我不知道如何使用它来返回创建时间:
BOOL WINAPI GetFileTime(
__in HANDLE hFile, // handle to the file
__out_opt LPFILETIME lpCreationTime, // FILETIME struct for creation time
__out_opt LPFILETIME lpLastAccessTime, // FILETIME struct for last access time
__out_opt LPFILETIME lpLastWriteTime // FILETIME struct for last modification time
);
//我这样做但是工作它返回01/01/1601。我需要做日期创建而不是日期修改
HANDLE h_fichier;
LPCWSTR fname = L"C:\\Program Files (x86)\\IE tn-Sign\\tn-Sign-plugin- ie.dll";
FILETIME date_fichier_tmp;
SYSTEMTIME date_fichier_utc, date_fichier_local;
//Ouverture du fichier
h_fichier = CreateFile(fname,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(h_fichier == INVALID_HANDLE_VALUE)
printf("CreateFile ko %S\n", fname);
EstEID_log("CreateFile ko %S\n", fname);
//Date de modification du fichier
if (!GetFileTime(h_fichier, NULL, NULL, &date_fichier_tmp))
printf("GetFileTime ko\n");
EstEID_log("GetFileTime ko\n");
//Convertion de la date
FileTimeToSystemTime(&date_fichier_tmp, &date_fichier_utc);
SystemTimeToTzSpecificLocalTime(NULL, &date_fichier_utc, &date_fichier_local);
printf("Derniere modification le %02d-%02d-%d %02dh%02d\n", date_fichier_local.wDay, date_fichier_local.wMonth, date_fichier_local.wYear, date_fichier_local.wHour, date_fichier_local.wMinute);
EstEID_log("Derniere modification le %02d-%02d-%d %02dh%02d\n", date_fichier_local.wDay, date_fichier_local.wMonth, date_fichier_local.wYear, date_fichier_local.wHour, date_fichier_local.wMinute);
//Fermeture du fichier
CloseHandle(h_fichier);
system("pause");
return 0;
答案 0 :(得分:0)
GetFileTime()
API返回文件的创建,修改和访问时间,受文件系统支持和各种时间/日期的操作系统处理。根据{{3}}文档,创建时间是第一个参数(在文件句柄之后)。您现有的通话正在检索"上次写入时间" (又名,修改时间)。而是将参数更改为返回
… GetFileTime(h_fichier, &date_fichier_tmp, NULL, NULL) …