如何安全检测Microsoft Office的已安装组件的安全方法?
-
13-12-2019 - |
题
我正在寻找最安全的方法来检测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
与这些位置我已经可以:
- 检测是否安装了办公室。
- 检测安装的办公室版本。
- 检测是否安装了Outlook。
我没有尝试过任何粒度而不是这个。
其他提示
如果您真的认为您不能依赖于exe或dll的路径,我会在安装各种组件的快照之前和之后的注册表(存在许多工具)。然而,在我的经验中,我发现有必要测试DLL和其他文件的存在,用于检测Office的已安装组件(我必须测试VBA DLL以检测例如安装的Visual Basic模块的存在)。文件的路径只能更改这么多。您只需要认识到32位和64位修补,以及WinXP和Win7 Pathing。
不隶属于 StackOverflow