1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <windows.h>
#include <tchar.h>
#include <iostream>
int main()
{
DWORD dummy;
DWORD fvisLen = GetFileVersionInfoSize("c:\\WINDOWS\\NOTEPAD.EXE", &dummy);
if (fvisLen > 0)
{
void *data = malloc(fvisLen);
GetFileVersionInfo("c:\\WINDOWS\\NOTEPAD.EXE", dummy, fvisLen, data);
VS_FIXEDFILEINFO *rootBlockData;
unsigned int rootBlockSize;
VerQueryValue(data, TEXT("\\"), (void**)&rootBlockData, &rootBlockSize);
std::cout << std::hex << rootBlockData->dwSignature << std::endl; // On affiche normalement FEEF04BD
free(data);
}
else
{
DWORD errCode = GetLastError();
if (errCode == 0x00000715)
std::cout << "Pas d'infos de version dispos pour c:\\WINDOWS\\NOTEPAD.EXE !" << std::endl;
}
return 0;
} |