VS_VERSION_INFO 切换到 Windows SDK 资源编译器后 Windows 资源管理器中未显示

VS_VERSION_INFO not showing in Windows Explorer after switching to Windows SDK Resource Compiler

我使用 RC(资源)文件获取链接到 EXE 文件的版本信息,最近我从 Borland Resource Compiler 切换到 Windows SDK 资源编译器,以便能够在我的应用程序中使用多种尺寸的图标。

图标有效,但现在当我编译我的应用程序时,资源信息似乎没有附加到 EXE 文件中。我怀疑适用于 BRCC32.EXE 的同一个 RC 文件不适用于 Windows SDK 资源编译器。

这是我的verinfo.rc内容:

VS_VERSION_INFO VERSIONINFO
FILEVERSION             1,0,0,0
PRODUCTVERSION          1,0,0,0
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
        VALUE "Comments",         "Company Soft[=13=]"
        VALUE "CompanyName",      "Company2[=13=]"
        VALUE "FileDescription",  "Company Soft[=13=]"
        VALUE "FileVersion",      "x.x.x.x[=13=]"
        VALUE "InternalName",     "Company Soft[=13=]"
        VALUE "LegalCopyright",   "Company2[=13=]"
        VALUE "OriginalFilename", "abrev.exe[=13=]"
        VALUE "ProductName",      "Company Soft[=13=]"
        VALUE "ProductVersion",   "x.x.x.x[=13=]"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0409,1200
    END
END

下面是我的 EXE 文件在资源管理器的文件属性中的显示方式:

最后,我没有忘记在我的 Delphi 项目文件中使用 verinfo.rc 文件:

program myprogram;
{$R 'verinfo.res' 'verinfo.rc'}

更新 #1

如果我将资源编译器从 Windows SDK Compiler 改回 Borland Resource Compiler 版本信息包含在EXE 文件(但我不能再使用多种尺寸的图标):

更新 #2

使用资源编辑器Resource Hacker I can see there is indeed version information resource in the EXE file. But I can't see this in Windows Explorer, and also can't retrieve this with a WinAPI function like GetFileVersionInfo

更新 #3

这是我在使用相同的 RC 文件但使用不同的资源编译器时发现的情况:

  1. 当使用 Borland Resource Compiler 时一切正常,版本信息显示在 Windows 资源管理器中; Resource Hacker 展示了这个:

  2. 当使用Windows SDK Resource Compiler版本信息仍然显示在Resource Hacker 但不是 Windows 探索者:

Version resource in DLL not visible with right-click 解决了这个问题:基本上我把 .rc 文件的第一行从

VS_VERSION_INFO VERSIONINFO

1 VERSIONINFO

现在一切正常!