【发布时间】:2010-10-25 22:18:54
【问题描述】:
我需要能够从我正在开发的一些 .NET 代码中检测我在我的机器中安装了哪个版本的 Excel。我目前为此使用 Application.Version,但它没有提供有关 Service Pack 的信息。
我最好避开这样的事情: http://www.mvps.org/access/api/api0065.htm
欢迎使用托管代码!
【问题讨论】:
我需要能够从我正在开发的一些 .NET 代码中检测我在我的机器中安装了哪个版本的 Excel。我目前为此使用 Application.Version,但它没有提供有关 Service Pack 的信息。
我最好避开这样的事情: 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
如果找不到 excel,则返回 0。
【讨论】:
不幸的是,这种方法是唯一可靠的方法。甚至Microsoft suggests using a similar technique(这是手动检查,但概念相同)。
如果您想在托管代码中执行此操作,我建议您只从您的链接中移植代码,并创建一个在新服务包发布时易于扩展的类。
【讨论】:
您可以检查注册表中的应用程序路径以获取 exe 的路径,然后获取其版本: 见http://www.codeproject.com/KB/office/getting_office_version.aspx
【讨论】:
虽然不可靠,但这种方法是我所知道的唯一方法。
请记住,您不必检查是否完全匹配。您可以对各个值进行比较,以查看您拥有的版本是否为例如 SP1 或更高版本。如果版本号大于或等于“11.0.6355.0”,您就知道它是新的(您需要实现比较)
【讨论】: