在使用MS Word通过OLE从我的应用程序生成文档。我想给安装了MS Office 2007 SP2的用户提供将文档保存为PDF的功能。这仅在SP2中可用,并且如果未安装Service Pack(当然也适用于以前版本MS Office的用户),应该隐藏此选项。如何确定MS Office 2007 SP2是否已安装?
此信息在任何地方都可用,如在注册表或任何配置文件中?
在使用MS Word通过OLE从我的应用程序生成文档。我想给安装了MS Office 2007 SP2的用户提供将文档保存为PDF的功能。这仅在SP2中可用,并且如果未安装Service Pack(当然也适用于以前版本MS Office的用户),应该隐藏此选项。如何确定MS Office 2007 SP2是否已安装?
此信息在任何地方都可用,如在注册表或任何配置文件中?
找不到对您有用的东西,但这里有些东西可能会对您有用。
Office版本存储在注册表
HKEY_LOCAL_MACHINE \Software\Microsoft\Office\12.0\Common\productVersion
价值为Office 2003和2007年这关键有一些变化12.0。我认为检查这个数字为不同的版本(带/不带SP1/SP2),看看是否有差异。
有来自微软不同的插件,提供一种打印到PDF功能:
和SP2也安装这些加载项。
我正在寻找一种方法来测试PDF功能是否安装。
C:\Program Files\Common Files\Microsoft Shares\Office12\EXP_PDF.DLL
在x64系统上,您必须查看“Program Files(x86)”文件夹。即使在不同的语言版本中也可以使用以下基本路径(在.net中):Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86) – irgendwienet 2010-06-03 07:31:38
有趣的发现。谢谢! – alfjorgen 2010-06-04 08:02:30
更新被安装在以下注册表项:如果PDF功能已安装(由一个附加在或SP)的计算机上 以下文件是仅存在。
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \ Installer程序\的UserData \ S-1-5-18 \产品\ 00002109030000000000000000F01FEC \补丁\ 6D6C63B08D5FFAE4FB4934672A03DAB5
对于应用到实际版本的相关信息个性化服务包看看这个隐藏的很好kb的条目:
好吧,这是有点晚了,但你可以直接从VBA确定服务包不必须弄乱注册表。很明显,您需要在Microsoft更新Office时更新它。
使用不同版本关闭办公室的支持页面,你可以得到的版本号,并使用一个函数来确定服务包等Office 2007的显示范围内的办公室不同的应用程序之间细微的差异,所以你不得不为调整需要。
则功能如下将做的工作为Excel办公室2007+:
Function DetermineExcelServicePack() As String
Dim sReturn As String
If Application.Version = "12.0" Then
If Application.Build < 6214 Then
sReturn = "Excel 2007, RTM"
ElseIf Application.Build < 6425 Then
sReturn = "Excel 2007, SP1"
ElseIf Application.Build < 6611 Then
sReturn = "Excel 2007, SP2"
Else
sReturn = "Excel 2007, SP3"
End If
ElseIf Application.Version = "14.0" Then
If Application.Build < 6029 Then
sReturn = "Excel 2010, RTM"
ElseIf Application.Build < 7015 Then
sReturn = "Excel 2010, SP1"
Else
sReturn = "Excel 2010, SP2"
End If
ElseIf Application.Version = "15.0" Then
sReturn = "Excel 2013, RTM"
Else
sReturn = "This version (" & Application.Version & "-" & Application.Build & ") is not supported by this function"
End If
DetermineExcelServicePack = sReturn
End Function
以编程方式检查MSO.DLL文件的版本是否大于或等于:
“12.0.6425.1000”
这是如果安装了SP2和上述用于文件中的值。
谢谢!我会尝试的! – alfjorgen 2010-03-25 11:02:09
有区别!非常感谢! – alfjorgen 2010-03-25 11:06:15
alfjorgen!对于上帝的爱有什么区别!? – Dlongnecker 2011-08-26 20:21:04