首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GetFIleVersionInfoSize()成功但返回不正确的大小

GetFIleVersionInfoSize()成功但返回不正确的大小
EN

Stack Overflow用户
提问于 2014-07-22 15:38:58
回答 1查看 1.7K关注 0票数 0

我正在尝试获取文件的版本。我想看看这个文件的版本号,以确定哪个操作系统安装在一个非引导驱动器上(实际上,我将在一个Win PE环境中这样做,并试图确定主驱动器是否安装了Windows或Windows 7)。总之,我有以下几点

代码语言:javascript
运行
复制
wchar_t *fileName;
fileName = new wchar_t[255];

lstrcpy(fileName, hdds[HardDriveIndexes::SystemDrive].driveLetter.c_str());

lstrcat(fileName, L"Windows\\System32\\winload.exe");

TCHAR *versionInfoBuffer;

DWORD versionDataSize;

if (versionDataSize = GetFileVersionInfoSize(fileName, NULL) != 0)
{
    versionInfoBuffer = new TCHAR[versionDataSize];

    BOOL versionInfoResult = FALSE;

    versionInfoResult = GetFileVersionInfo(fileName, NULL, versionDataSize, versionInfoBuffer);
    if (versionInfoResult == FALSE)
    {
        wprintf(L"The last error associated with getting version info is: %d\n", GetLastError());
    }

}
else
{
    wprintf(L"The last error associated with gettting version info size is: %d\n", GetLastError());
}

问题是GetFileVersionInfoSize()成功了,但总是返回1作为大小。这将导致GetFileVersionInfo()因错误122而失败。到目前为止,我只在Windows 7系统上对此进行了测试。还有另一个函数GetFileVersionInfoSizeEx()按预期工作,但它只支持从Vista开始。如果可能的话,我想保持XP的支持(我们的一些旧的Win PE映像仍然是基于XP的)。

GetFileVersionInfoSize()被废弃了吗?我不知怎么找不到这些信息,我是不是不正确地使用它,等等?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-22 17:29:44

问题不在于电话,而在于你的任务;你需要在它周围的父母:

代码语言:javascript
运行
复制
if ( ( versionDataSize = GetFileVersionInfoSize(fileName, NULL) ) != 0)

您所写的内容指定表达式size != 0的值,该表达式为1表示为true。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24891777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档