编程语言:获取文件最后修改时间的VC代码

手册/FAQ (568) 2016-04-21 09:54:03

 

  很多时候我们需要知道系统是什么时候编译生成的。我想到的一个直接的思路的是获取exe文件的最后修改时间。下面的一段代码可以做到这一点:

  •   CWinApp* pApp = AfxGetApp();  
  •     std::string strAppName;  
  •     if (NULL!=pApp)  
  •     {  
  •         TCHAR szAppName[MAX_PATH];  
  •         memset(szAppName,'\0',MAX_PATH*sizeof(TCHAR));  
  •         :: GetModuleFileName(pApp->m_hInstance,szAppName, MAX_PATH);  
  •         strAppName = szAppName;  
  •         WIN32_FIND_DATA ffd ;  
  •         HANDLE hFind = FindFirstFile(szAppName,&ffd);   
  •         SYSTEMTIME st = {0};  
  •         TCHAR szTimeBuf[64] = {0};  
  •         FILETIME LocalFileTimel;  
  •         FileTimeToLocalFileTime(&ffd.ftLastWriteTime, &LocalFileTimel);  
  •         FileTimeToSystemTime(&LocalFileTimel, &st);  
  •         sprintf(szTimeBuf,"%4d-%02d-%02d %02d:%02d:%2d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);   
  • }  

 

          当然如果一个系统的某些dll是动态加载的,即dll修改了但exe还没修改的话,就需要比较dll的修改时间和exe文件的修改时间以确定系统的编译生成时间。

 

THE END