我需要能够从我正在开发的一些.NET代码中检测我在计算机上安装了哪个版本的Excel。 我目前使用的是Application.Version,但它不提供有关服务包的信息。
最好避免像这样的东西:
http://www.mvps.org/access/api/api0065.htm
欢迎使用托管代码!
Public Shared Function GetExcelVersion() As Integer
Dim excel As Object = Nothing
Dim ver As Integer = 0
Dim build As Integer
Try
excel = CreateObject("Excel.Application")
ver = excel.Version
build = excel.Build
Catch ex As Exception
'Continue to finally sttmt
Finally
Try
Marshal.ReleaseComObject(excel)
Catch
End Try
GC.Collect()
End Try
Return ver
End Function
不幸的是,这种方法是唯一可靠的方法。即使Microsoft也建议使用类似的技术(这是用于手动检查,但概念相同)。
如果您想在托管代码中执行此操作,我建议只需从您的链接移植代码,并创建一个易于在发布新服务包时进行扩展的类。
您可以在注册表中检查应用程序路径以获取exe文件的路径,然后获取其版本:
请参见http://www.codeproject.com/KB/office/getting_office_version.aspx虽然不够健壮,但这种方法是我所知道的唯一方法。
请记住,您不必检查完全匹配。您可以对各个值进行比较,以查看您拥有的版本是否为SP1或更高版本。如果版本号大于或等于“11.0.6355.0”,则表示它是更新的(您需要实现比较)。