Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <iostream>
- #include <sstream>
- #include <iomanip>
- #include <string>
- using namespace std;
- struct LANGANDCODEPAGE {
- WORD wLanguage;
- WORD wCodePage;
- } *lpTranslate;
- #pragma comment(lib, "Version.lib")
- int _tmain(int argc, _TCHAR* argv[])
- {
- string sFileName;
- DWORD dwVISize = 0;
- DWORD dummyHandle;
- unsigned unFixedFileInfoSize = 0;
- unsigned unDescriptSize = 0;
- unsigned char *cInfoBuffer;
- VS_FIXEDFILEINFO *lpFixedFInfo = new VS_FIXEDFILEINFO[ sizeof( VS_FIXEDFILEINFO ) ];
- ZeroMemory( lpFixedFInfo, sizeof( VS_FIXEDFILEINFO ) );
- LANGANDCODEPAGE langAndCodePage;
- ZeroMemory( &langAndCodePage, sizeof( LANGANDCODEPAGE ) );
- cout << "Enter Filename: ";
- getline( cin, sFileName );
- cout << "File Name Set: " << sFileName << endl;
- dwVISize = GetFileVersionInfoSize( sFileName.c_str(), &dummyHandle );
- if ( dwVISize == 0 )
- {
- cout << "GetFileVersionInfoSize FAILED! - Error Code: " << GetLastError() << endl;
- system("PAUSE");
- return 0;
- } else { cout << "Version Size: " << dwVISize << endl; }
- cInfoBuffer = new unsigned char[ dwVISize ];
- ZeroMemory( cInfoBuffer, dwVISize );
- if ( !GetFileVersionInfo( sFileName.c_str(), NULL, dwVISize, cInfoBuffer) )
- {
- cout << "GetFileVersionInfo FAILED! - Error Code: " << GetLastError() << endl;
- system("PAUSE");
- return 0;
- } else { cout << "Version Info Retrived\t[OK]." << endl; }
- if ( !VerQueryValue( cInfoBuffer, "\\VarFileInfo\\Translation", (LPVOID*)&langAndCodePage, &unFixedFileInfoSize ) )
- {
- cout << "VerQueryValue \\VarFileInfo\\Translation - failed with error: " << GetLastError() << endl;
- system("PAUSE");
- return false;
- } else { cout << "\\VarFileInfo\\Translation \t[OK]." << endl; }
- cout << "Lang ID: " << langAndCodePage.wLanguage << endl;
- cout << "Code page: " << langAndCodePage.wCodePage << endl;
- std::wstringstream ss;
- (ss << "\\StringFileInfo\\"<< std::hex << std::setw(4)<<std::setfill(L'0') << langAndCodePage.wLanguage
- << std::setw(4) << langAndCodePage.wLanguage <<"\\FileDescription");
- wcout << ss.str().c_str() << endl;
- char *cDescriptName = new char[MAX_PATH];
- if ( !VerQueryValueW( cInfoBuffer, ss.str().c_str(), (LPVOID*)&cDescriptName, &unDescriptSize ) )
- {
- cout << "VerQueryValue " << " File Description " << " - failed with error: " << GetLastError() << endl;
- system("PAUSE"); // ERROR 1813 - Resource not found...
- return 0;
- } else { cout << "FILE DESCRIPTION: " << cDescriptName << endl; }
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment