我正在寻找最安全的方法来检测Microsoft Office(如果有的话)是否安装在给定的工作站上。我意识到这可以看作是一个关于serverfault的问题,但由于我将在脚本中使用这件事,并且在这里的许多人都更熟悉办公室内部工作,我以为这将是最好的要求。

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

有帮助吗?

解决方案

我最终测试了特定的注册表项,考虑到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-key表示Outlook安装路径
  • Office base path Office 12标准GUID
  • \Registration\{90120000-0012-0000-0000-0000000FF1CE} Office 12 Professional Plus GUID

与这些位置我已经可以:

  1. 检测是否安装了办公室。
  2. 检测安装的办公室版本。
  3. 检测是否安装了Outlook。
  4. 我没有尝试过任何粒度而不是这个。

其他提示

如果您真的认为您不能依赖于exe或dll的路径,我会在安装各种组件的快照之前和之后的注册表(存在许多工具)。然而,在我的经验中,我发现有必要测试DLL和其他文件的存在,用于检测Office的已安装组件(我必须测试VBA DLL以检测例如安装的Visual Basic模块的存在)。文件的路径只能更改这么多。您只需要认识到32位和64位修补,以及WinXP和Win7 Pathing。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top