版本读取组件( 类似于 Explorer 的“版本”选项卡)






2.44/5 (8投票s)
2006年12月22日
1分钟阅读

27991

570
封装在简单组件中的版本 API。
引言
本文介绍了一个简单的 COM 对象,用于读取给定文件的版本信息。返回的版本信息与 Windows 资源管理器中文件属性的“版本”选项卡中显示的信息相同。
背景
使用此组件非常容易。最初,我将此代码设计为 C++ 类,构造函数接受文件名作为参数。然后,我决定将其制作成 COM 组件,以满足更广泛的受众(并且我也可以在脚本中使用它)。它可以用于支持 COM 的任何语言,但如果您有兴趣了解 Win32 版本 API,那么您可能需要在 MSDN 中查找以下函数:GetFileVersionInfoSize()
、GetFileVersionInfo()
和 VerQueryValue()
。
使用代码
熟悉在 VB6、.NET 或 C++ 中使用 COM 组件的任何人都可以使用此代码。我提供了一个可用的 C++ 版本,它将简单地以 CSV(逗号分隔值)格式打印它在命令行中接收到的文件的版本。然后,我使用此程序在批处理文件中,使用“for”命令为位于 windows\system32\drivers 中的所有驱动程序版本生成一个 *.csv 文件。我喜欢 *.csv 格式,因为它是在 Microsoft Excel(或您用于格式化输出以使其更具吸引力)中放置数据的最简单方法。目前,仅编程了 MSDN 中提到的字段,但通过在 VersionFieldArray
中添加条目并在 VersionFieldEnum
中添加另一个枚举值,很容易构建自己的版本。然后,添加相应的属性。
// use this array to extend for more fields const tstring VersionFieldArray[] = { _T("Comments"), _T("CompanyName"), _T("FileDescription"), _T("FileVersion"), _T("InternalName"), _T("LegalCopyright"), _T("LegalTrademarks"), _T("OriginalFilename"), _T("PrivateBuild"), _T("ProductName"), _T("ProductVersion"), _T("SpecialBuild") }; // use this enumeration along with above array enum VersionFieldEnum { Comments, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, PrivateBuild, ProductName, ProductVersion, SpecialBuild, MaxVersionFields };
历史
2007年1月1日 - 更新下载