2010-03-25 46 views
6

在使用MS Word通过OLE从我的应用程序生成文档。我想给安装了MS Office 2007 SP2的用户提供将文档保存为PDF的功能。这仅在SP2中可用,并且如果未安装Service Pack(当然也适用于以前版本MS Office的用户),应该隐藏此选项。如何确定MS Office 2007 SP2是否已安装?

此信息在任何地方都可用,如在注册表或任何配置文件中?

回答

4

找不到对您有用的东西,但这里有些东西可能会对您有用。

Office版本存储在注册表

HKEY_LOCAL_MACHINE \Software\Microsoft\Office\12.0\Common\productVersion 

价值为Office 2003和2007年这关键有一些变化12.0。我认为检查这个数字为不同的版本(带/不带SP1/SP2),看看是否有差异。

+0

谢谢!我会尝试的! – alfjorgen 2010-03-25 11:02:09

+0

有区别!非常感谢! – alfjorgen 2010-03-25 11:06:15

+0

alfjorgen!对于上帝的爱有什么区别!? – Dlongnecker 2011-08-26 20:21:04

1

有来自微软不同的插件,提供一种打印到PDF功能:

  • 2007 Microsoft Office加载项:Microsoft Save as PDF或XPS
  • 2007 Microsoft Office加载项:Microsoft另存为PDF
  • 2007 Microsoft Office加载项:Microsoft另存为XPS(不附带PDF支持)

和SP2也安装这些加载项。

我正在寻找一种方法来测试PDF功能是否安装。

C:\Program Files\Common Files\Microsoft Shares\Office12\EXP_PDF.DLL 
+0

在x64系统上,您必须查看“Program Files(x86)”文件夹。即使在不同的语言版本中也可以使用以下基本路径(在.net中):Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86) – irgendwienet 2010-06-03 07:31:38

+0

有趣的发现。谢谢! – alfjorgen 2010-06-04 08:02:30

1

更新被安装在以下注册表项:如果PDF功能已安装(由一个附加在或SP)的计算机上 以下文件是仅存在。

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \ Installer程序\的UserData \ S-1-5-18 \产品\ 00002109030000000000000000F01FEC \补丁\ 6D6C63B08D5FFAE4FB4934672A03DAB5

1

好吧,这是有点晚了,但你可以直接从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 
0

以编程方式检查MSO.DLL文件的版本是否大于或等于:

“12.0.6425.1000”

这是如果安装了SP2和上述用于文件中的值。

相关问题