2

我正在寻找最安全的方法来检测给定工作站上安装了 Microsoft Office 的哪些组件(如果有)。我意识到这也可以被视为 Serverfault 的问题,但由于我将在脚本中使用它,而且这里的许多人更熟悉 Office 的内部工作,我认为这将是最好的提问地方。

我查看了卸载键,但它显示了系统上实际不存在的组件。我相信这与 Office 在首次访问时安装组件的方式有关。我不喜欢寻找可执行文件,因为理论上路径可以改变。

4

2 回答 2

1

考虑到 32 位和 64 位 Windows 安装之间的差异,我最终测试了特定的注册表项。我正在关注以下注册表位置/值:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\— 64 位 Windows 安装上的基本 Office12 密钥
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\— 32 位 Windows 安装上的基本 Office12 位置
  • Office base path\Outlook\InstallRoot\Path— 表示 Outlook 安装路径的键
  • Office base path\Registration\{90120000-0012-0000-0000-0000000FF1CE}—Office 12 标准 GUID 的密钥
  • Office base path\Registration\{90120000-0011-0000-0000-0000000FF1CE}—Office 12 Professional Plus GUID 的密钥

有了这些位置,我已经能够:

  1. 检测是否安装了Office。
  2. 检测已安装的 Office 版本。
  3. 检测是否安装了 Outlook。

我没有尝试过比这更细化。

于 2012-07-09T18:03:49.337 回答
0

如果您真的认为您不能依赖 exe 或 dll 的路径,我会在安装各种组件的快照之前和之后比较注册表(存在许多用于此目的的工具)。然而,根据我的经验,我发现有必要测试 dll 和其他文件的存在以检测已安装的 Office 组件(例如,我必须测试 VBA dll 以检测是否存在已安装的 Visual Basic 模块)。文件的路径只能改变这么多。您只需要了解 32 位和 64 位修补程序,以及 winxp 和 win7 路径。

于 2012-07-01T04:28:00.393 回答