在使用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