У меня есть исполняемый файл Windows, который я установил на машине. Есть ли способ или API для получения метки времени, когда исполняемый файл был установлен на этой машине. Я не прошу создать временную метку создания/изменения/доступа к этому exe, но время, когда exe был установлен на конкретной машине. Кроме того, exe был установлен в системной папке Windows.Исполняемое время установки
ответ
Вы можете использовать FileTimeToSystemTime()
, чтобы получить дату и время, когда файл или каталог был создан.
#include <windows.h>
#include <stdio.h>
int main(){
// a file handle
HANDLE hFile1;
FILETIME ftCreate, ftAccess, ftWrite;
SYSTEMTIME stUTC, stLocal, stUTC1, stLocal1, stUTC2, stLocal2;
// a filename,
char fname1[ ] = "c:\\windows\\explorer.exe";
// temporary storage for file sizes
DWORD dwFileSize;
DWORD dwFileType;
// opening the existing file
hFile1 = CreateFile(fname1, // file to open
GENERIC_READ, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // default security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attribute template
if(hFile1 == INVALID_HANDLE_VALUE){
printf("Could not open %s file, error %d\n", fname1, GetLastError());
return 4;
}
dwFileType = GetFileType(hFile1);
dwFileSize = GetFileSize(hFile1, NULL);
printf("%s size is %d bytes and file type is %d\n", fname1, dwFileSize, dwFileType);
// retrieve the file times for the file.
if(!GetFileTime(hFile1, &ftCreate, &ftAccess, &ftWrite)){
printf("Something wrong lol!\n");
return FALSE;
}
// convert the created time to local time.
FileTimeToSystemTime(&ftCreate, &stUTC);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);
// convert the last-access time to local time.
FileTimeToSystemTime(&ftAccess, &stUTC1);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC1, &stLocal1);
// convert the last-write time to local time.
FileTimeToSystemTime(&ftWrite, &stUTC2);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC2, &stLocal2);
// build a string showing the date and time.
printf("\nCreated on: %02d/%02d/%d %02d:%02d\n", stLocal.wDay, stLocal.wMonth, stLocal.wYear, stLocal.wHour, stLocal.wMinute);
printf("Last accessed: %02d/%02d/%d %02d:%02d\n", stLocal1.wDay, stLocal1.wMonth, stLocal1.wYear, stLocal1.wHour, stLocal1.wMinute);
printf("Last written: %02d/%02d/%d %02d:%02d\n\n", stLocal2.wDay, stLocal2.wMonth, stLocal2.wYear, stLocal2.wHour, stLocal2.wMinute);
// close the file's handle and itself
CloseHandle(hFile1);
return 0;
}
У меня создалось впечатление, что созданное время - это время, когда файл был первоначально создан на главной машине сборки, но выглядит, если я создаю exe в X раз, но скопировал exe в Y раз на машине M, а затем создал время файл на машине M будет временем Y. Это верно? – user3364310
Да, если вы скопируете exe в другое место, тогда он получит новую временную метку. Я обновил код. он показывает дату создания, когда он был последним, и когда он был изменен. –
Отлично. Благодарю . – user3364310
- 1. Получить исполняемое имя во время выполнения
- 2. Получить исполняемое приложение Windows 8
- 3. UNIX cc исполняемое местоположение
- 4. Linux автономное исполняемое поколение
- 5. Создать исполняемое приложение Node Js для Mac
- 6. Получить исполняемое имя ссылочного проекта
- 7. Как установить исполняемое имя процесса?
- 8. Получить исполняемое действие в HttpModule
- 9. Получить эффективное исполняемое имя файла
- 10. Создать исполняемое приложение в linux
- 11. Node Webkit - Исполняемое имя программы
- 12. Остановка установки останавливается во время установки пучка
- 13. Ошибка Capistrano во время установки установки
- 14. Регистрация во время установки/установки пакетов
- 15. установка Путь установки во время установки
- 16. Время установки с PHP
- 17. Какое время установки CMake?
- 18. соединения во время установки
- 19. Соглашение во время установки
- 20. java.lang.NullPointerException во время установки
- 21. Время установки для daterangepicker
- 22. Android - Сервис, время установки
- 23. Время окончания установки Wordpress
- 24. Время установки NServiceBus
- 25. WSO2 IOS Время простоя во время установки
- 26. Ant to Gradle: Исполняемое преобразование JAR
- 27. Ошибка во время установки mediaproxy
- 28. Symfony2 сбой во время установки
- 29. SpaCy urllib.error.URLError во время установки
- 30. Ошибка во время установки cocoapods
Возможно, есть запись в реестре. –
Определите «установленный». –
Установленное время означает, что exe был скопирован на машине. – user3364310