Deployment 检测Microsoft Office已安装组件的安全方法是什么?

Deployment 检测Microsoft Office已安装组件的安全方法是什么?,deployment,installation,office-2007,Deployment,Installation,Office 2007,我正在寻找最安全的方法来检测给定工作站上安装了哪些Microsoft Office组件(如果有的话)。我意识到这也可能被视为Serverfault的问题,但由于我将在脚本中使用它,并且这里的许多人更熟悉Office的内部工作,所以我认为这将是最好的提问方式 我已经查看了卸载密钥,但它显示了系统中实际上不存在的组件。我相信这与Office在首次访问时安装组件的方式有关。我不喜欢寻找可执行文件,因为路径在理论上是可以改变的。如果你真的认为你不能依赖到exe或dll的路径,我会在安装各种组件之前和之后

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


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

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

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

  • HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\
    -64位Windows安装上的基本Office12密钥
  • HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Office\12.0\
    -32位Windows安装上的基本Office 12位置
  • Office基本路径
    \Outlook\InstallRoot\path
    -表示Outlook安装路径的键
  • 办公室基本路径
    \Registration\{90120000-0012-0000-0000-0000000 FF1CE}
    -用于Office 12标准GUID的密钥
  • 办公室基本路径
    \Registration\{90120000-0011-0000-0000-0000000 FF1CE}
    -Office 12 Professional Plus GUID的密钥
通过这些地点,我能够:

  • 检测是否安装了Office
  • 检测已安装的Office版本
  • 检测是否安装了Outlook

  • 我没有尝试过比这更精细的操作。

    您假设默认值是在安装应用程序时采用的。我有一个足够大和完全不同的环境,使得Office可以安装在辅助存储卷上,或者其他类似的废话。我想确保这个变量被考虑在内。我明白了。不清楚“组件”指的是Outlook和Office。我认为组件是指Office安装的组件,例如他们是否使用VBA安装Office,是否使用Office PIA,等。我过去所做的是检查HKEY_CLASSES\u ROOT\Word.Application\\CurVer,以安装查找硬编码路径(如\Office\12.0)的版本。我是根据MSI术语考虑的。不过,谢谢你对HKCR钥匙的提醒。这似乎很有用。我只是稍微研究了一下,它看起来像是一个16位兼容性的遗留配置单元。[HKLM | HKCU]\SOFTWARE\Classes似乎是新的规范位置。