翼之痕 2017-09-18 09:14 采纳率: 75%
浏览 1184
已采纳

获取文件版本号失败?

#include "stdafx.h"
#include
#include
#include
#include

#pragma comment(lib,"version.lib")
using namespace std;

string GetFileVersion(std::string &strFilePath)
{
DWORD dwSize;
DWORD dwRtn;
std::string szVersion;
//获取版本信息大小
dwSize = GetFileVersionInfoSizeA(strFilePath.c_str(),NULL);
if (dwSize == 0)
{
return "";
}
char *pBuf;
pBuf = new char[dwSize + 1];
if (pBuf == NULL)
return "";

memset(pBuf,0,dwSize + 1);
dwRtn = GetFileVersionInfoA(strFilePath.c_str(),NULL,dwSize,pBuf);
if (dwRtn == 0)
    return "";
LPVOID lpBuffer = NULL;
UINT uLen = 0;
//版本资源中获取信息
dwRtn = VerQueryValueA(pBuf,"\\StringFileInfo\\040904E4\\ProductVersion",&lpBuffer,&uLen);
if (dwRtn == 0)
    return "";
szVersion = (char*)lpBuffer;
delete pBuf;
return szVersion;

}

int _tmain(int argc, _TCHAR* argv[])
{

string strFilePath = "C:\Users\jhon am\Desktop\Backupper.exe";
GetFileVersion(strFilePath);

getchar();
return 0;

}
这上面是我写的测试代码,始终获取不到文件的产品版本号,不知道错在哪里了,哪位知道的大神指点下,谢谢了

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-09-18 09:23
    关注

    这侧标是否有权限,文件是否存在,路径是否正确

    而且你这代码看上去也奇怪,你到底用GetFileVersionInfo得到版本号还是用注册表记录的某个值当作版本号

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月9日

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退