2009-11-03 27 views
1

我有一堆本機(C++)二進制文件,我想從C#控制檯應用程序中掃描和檢索版本信息。使用System.Diagnostics.FileVersionInfo我可以得到實際的版本字符串,公司名稱等。但是有一個"Build Date"字符串(由Windows文件屬性"Version"選項卡顯示),並且它不被FileVersionInfo檢索。使用C#從本機二進制文件獲取自定義文件版本信息

"Build Date"似乎是技術上定製的數據放在文件中,我想這就是爲什麼我FileVersionInfo不會自動獲取這些數據,但有什麼辦法來獲得這些自定義值?

在本地二進制文件,該"Build Date"串通過.RC文件中包含使用以下部分:

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()); 

回答

0

如果FileVersionInfo類不是您想要的,您可以隨時轉到the native version info APIs

+0

好吧,我可以肯定PInvoke到這些API中,但是絕對沒有.NET API會讓我這樣做嗎? – 2009-11-03 15:29:55

+0

不要這樣想。如果有的話,FileVersionInfo類肯定會是它。 – 2009-11-04 22:45:53

相關問題