博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】VerQueryValue失败的解决办法
阅读量:4357 次
发布时间:2019-06-07

本文共 1797 字,大约阅读时间需要 5 分钟。

cs_path.Replace(L"\\",L"\\\\");//把C:\123\test.exe转换为C:\\123\\test.exe DWORD dwSize=0; DWORD dwHandle=0; UINT uiDataSize=80; dwSize=GetFileVersionInfoSize(cs_path,&dwHandle); LPVOID lpBuffer=malloc(2*dwSize); if(!lpBuffer) {  return ; } LPVOID lpData = malloc(2*uiDataSize); if(!lpData) {   return ; } if(!GetFileVersionInfo(cs_path, 0, dwSize, lpBuffer)) {  MessageBox(L"错误1,无法完成操作",L"错误");  return ; } CString strProduct; if(!(VerQueryValue(lpBuffer,              L"\\StringFileInfo\\040904B0\\ProductName",     &lpData,     &uiDataSize))) {  MessageBox(L"错误2,无法完成操作",L"错误"); } else {  strProduct.Format(L"%s", lpData);  MessageBox(strProduct); }  free(lpBuffer);  VerQueryValue偶尔可以成功,大多数情况下失败,请问这是为什么。谢谢了。(文件确实存在,cs_path路径也正确)使用GetLastError能有什么帮助么?和缺少语言信息定义有关?怎么样才可以获得几乎所有文件的(包括微软的几个核心文件,svchost.exe,smss.exe之类)?bylh

GetLastError的值是1813,不是所有文件的版本信息都是美国英语的,要枚举所有代码页。

MSDN的例子,枚举所有代码页// Structure used to store enumerated languages and code pages.HRESULT hr;struct LANGANDCODEPAGE {  WORD wLanguage;  WORD wCodePage;} *lpTranslate;// Read the list of languages and code pages.VerQueryValue(pBlock,               TEXT("\\VarFileInfo\\Translation"),              (LPVOID*)&lpTranslate,              &cbTranslate);// Read the file description for each language and code page.for( i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ ){  hr = StringCchPrintf(SubBlock, 50,            TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"),            lpTranslate[i].wLanguage,            lpTranslate[i].wCodePage);    if (FAILED(hr))    {    // TODO: write error handler.    }  // Retrieve file description for language and code page "i".   VerQueryValue(pBlock,                 SubBlock,                 &lpBuffer,                 &dwBytes); }
原始链接:
 

转载于:https://www.cnblogs.com/Lthis/p/4202309.html

你可能感兴趣的文章
Nginx 防盗链
查看>>
如何讓Android系統顯示CJK擴展區漢字
查看>>
Android 下拉选择绑定Value和Text值
查看>>
HTML+CSS小结
查看>>
Android防止按钮连续点击
查看>>
ElasticSearch Mapping中的字段类型
查看>>
数据库中主键和外键的设计原则
查看>>
怎样理解阻塞非阻塞与同步异步的区别?
查看>>
Xcode 警告信息处理:Format string is not a string literal (potentially insecure)
查看>>
关于jQuery表单校验的应用
查看>>
matplotlib----初探------5直方图
查看>>
jquery之ajax
查看>>
Pro Git(中文版)
查看>>
解决phpmyadmin-1800秒超时链接失效问题
查看>>
OpenGL第十一节:拉伸和过滤
查看>>
AlertDialog的onCreateDialog与onPrepareDialog用法
查看>>
swift菜鸟入门视频教程-12-21讲
查看>>
PL/SQL 异常处理程序
查看>>
javascript小白学习指南1---0
查看>>
div:给div加滚动栏 div的滚动栏设置
查看>>