GetFileVersionInfo

来源:互联网 发布:淘宝卖家怎么清洗订单 编辑:程序博客网 时间:2024/06/07 22:06
#include <stdio.h>#include <windows.h>#include <assert.h>#include <tchar.h>#pragma comment(lib,"Version.lib")wchar_t* QueryValue(wchar_t* pValueName , wchar_t* pModuleName)  {  PBYTE   lpVersionData = NULL;  DWORD   dwLangCharset = 0;    UINTnQuerySize;  DWORD* pTransTable;  wchar_t szText[MAX_PATH]={0};wchar_t* lpData=NULL;  DWORD dwHandle;  DWORD dwDataSize; do  {  dwDataSize = GetFileVersionInfoSize(pModuleName, &dwHandle);  if (dwDataSize == 0)  break;  lpVersionData = new BYTE[dwDataSize];if ( NULL == lpVersionData)  break;  ZeroMemory(lpVersionData,dwDataSize);if (!GetFileVersionInfo(pModuleName, dwHandle, dwDataSize, (void*)lpVersionData))  break;  // 设置语言  if (!VerQueryValue(lpVersionData, L"\\VarFileInfo\\Translation", (void **)&pTransTable, &nQuerySize))  break;  dwLangCharset = MAKELONG(HIWORD(pTransTable[0]), LOWORD(pTransTable[0]));  if (lpVersionData == NULL)  break;  LPVOID lplpBuffer;_sntprintf_s(szText, sizeof(szText),L"\\StringFileInfo\\%08lx\\%s",dwLangCharset, pValueName);  if (VerQueryValue((void *)lpVersionData, szText, (LPVOID*)&lplpBuffer, &nQuerySize)){int nlen=wcslen((wchar_t*)lplpBuffer);lpData=new wchar_t[nlen+sizeof(wchar_t)];RtlZeroMemory(lpData,nlen*sizeof(wchar_t)+sizeof(wchar_t));CopyMemory(lpData,lplpBuffer,nlen*sizeof(wchar_t));}} while (FALSE);  if (lpVersionData){delete[] lpVersionData;}return lpData;  }  int main(void){wprintf(TEXT("Comments=%s\n"),QueryValue(TEXT("Comments"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("CompanyName=%s\n"),QueryValue(TEXT("CompanyName"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("FileDescription=%s\n"),QueryValue(TEXT("FileDescription"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("FileVersion=%s\n"),QueryValue(TEXT("FileVersion"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("InternalName=%s\n"),QueryValue(TEXT("InternalName"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("LegalCopyright=%s\n"),QueryValue(TEXT("LegalCopyright"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("OriginalFilename=%s\n"),QueryValue(TEXT("OriginalFilename"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("ProductName=%s\n"),QueryValue(TEXT("ProductName"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("ProductVersion=%s\n"),QueryValue(TEXT("ProductVersion"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("PrivateBuild=%s\n"),QueryValue(TEXT("PrivateBuild"),TEXT("c:\\windows\\notepad.exe")));wprintf(TEXT("SpecialBuild =%s\n"),QueryValue(TEXT("SpecialBuild"),TEXT("c:\\windows\\notepad.exe")));getchar();getchar();return 0;}/*Comments=(null)CompanyName=Microsoft CorporationFileDescription=NotepadFileVersion=10.0.15063.0 (WinBuild.160101.0800)InternalName=NotepadLegalCopyright=?Microsoft Corporation. All rights reserved.OriginalFilename=NOTEPAD.EXE.MUIProductName=Microsoft?Windows?Operating SystemProductVersion=10.0.15063.0PrivateBuild=(null)SpecialBuild =(null)*/

原创粉丝点击