使用C#从Native二进制文件获取自定义文件版本信息

时间:2009-11-03 13:17:48

标签: c# c++ version

我有一堆本机(C ++)二进制文件,我想扫描并从C#控制台应用程序中检索有关的版本信息。使用System.Diagnostics.FileVersionInfo我可以获取实际版本字符串,公司名称等。但是其中有一个"Build Date"字符串(由Windows文件属性"Version"选项卡显示),并且FileVersionInfo没有检索到它。

似乎"Build Date"在技术上是自定义数据放在文件中,我想这就是为什么我FileVersionInfo不会自动获取这些数据,但有没有办法获取这些自定义值?

在本机二进制文件中,使用以下部分通过.RC文件包含"Build Date"字符串:

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "Build Date", "11/03/2009"
            VALUE "CompanyName", "My Company "
            VALUE "FileDescription", "My DLL"
            VALUE "FileVersion", VERSTR
            VALUE "InternalName", "MyCode.dll"
            VALUE "LegalCopyright", "Copyright © Me"
            VALUE "ProductVersion", VERSTR
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

然后我尝试在C#中检索信息,如下所示:

FileVersionInfo ver = FileVersionInfo.GetVersionInfo(path);
Console.WriteLine(ver.ToString());

1 个答案:

答案 0 :(得分:0)

如果FileVersionInfo类不想要,您可以随时转到the native version info APIs