如何返回文件创建日期?

时间:2017-07-18 09:23:29

标签: c windows winapi

如何在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;

1 个答案:

答案 0 :(得分:0)

GetFileTime() API返回文件的创建,修改和访问时间,受文件系统支持和各种时间/日期的操作系统处理。根据{{​​3}}文档,创建时间是第一个参数(在文件句柄之后)。您现有的通话正在检索"上次写入时间" (又名,修改时间)。而是将参数更改为返回

… GetFileTime(h_fichier, &date_fichier_tmp, NULL, NULL) …