2012-05-22 66 views
2

我正在尋找最安全的方式來檢測Microsoft Office的哪些組件(如果有的話)安裝在給定的工作站上。我意識到這也可以看作是Serverfault的一個問題,但由於我將在腳本中使用它,並且這裏很多人更熟悉Office的內部工作,所以我認爲這將是最好的問題。檢測Microsoft Office安裝組件的安全方法是什麼?

我看了卸載關鍵,但它表明,實際上並不存在於系統上的組件。我相信這與Office在首次訪問時安裝組件的方式有關。我不喜歡尋找可執行文件,因爲路徑理論上可能會改變。

回答

1

我結束了對特定的註冊表項的測試,考慮到32位和64位Windows安裝之間的差異。我關注到以下注冊表位置/值:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\在64位Windows -The基地OFFICE12鍵安裝
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\在32位Windows -The基地OFFICE12位置安裝
  • Office base path\Outlook\InstallRoot\Path -Key標誌着Outlook安裝路徑
  • Office base path\Registration\{90120000-0012-0000-0000-0000000FF1CE} -Key爲Office 12的標準GUID
  • Office base path\Registration\{90120000-0011-0000-0000-0000000FF1CE} -Key爲Office 12的專業加GUID

與這些位置我已經能夠:

  1. 檢測是否安裝了Office。
  2. 檢測已安裝的Office版本。
  3. 檢測是否安裝了Outlook。

我沒有試圖得到任何比這更精細。

+1

我明白了。目前還不清楚,「組件」是指Outlook和Office。我使用組件來表示Office安裝的組件,例如他們是否安裝了Office with VBA,Office PIA等。我過去所做的是檢查HKEY_CLASSES_ROOT \ Word.Application \ CurVer以安裝安裝的版本尋找像\ Office \ 12.0 \ – JohnZaj

+0

這樣的硬編碼路徑我在思考MSI術語。不過,感謝大家對HKCR鑰匙的關注。這似乎很有用。 – bshacklett

+0

我只是看了一下,它看起來像HKCR是16位兼容的傳統配置單元。 [HKLM | HKCU] \ SOFTWARE \ Classes看起來是新的規範位置。 – bshacklett

0

如果你真的認爲你不能依賴路徑的exe或dll的,我會diff的註冊表(許多工具,這存在)的前和安裝各種組件的快照之後。然而,根據我的經驗,我發現有必要測試是否存在用於檢測Office安裝組件的DLL文件和其他文件(例如,我必須測試VBA dll以檢測是否安裝了可視化基本模塊)。文件的路徑只能改變很多。您只需要瞭解32位和64位修補以及winxp和win7路徑。

+0

你假設安裝應用程序時採取的默認值。我有足夠大和不同的環境,Office可能已經安裝在輔助存儲捲上,或者其他一些廢話。我想確保這個變量是會計的。 – bshacklett

相關問題