【问题标题】:What a safe way to detect installed components of Microsoft Office?检测 Microsoft Office 已安装组件的安全方法是什么?
【发布时间】:2012-05-22 14:17:43
【问题描述】:

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

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

【问题讨论】:

    标签: deployment installation office-2007


    【解决方案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。

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

    【讨论】:

    • 我明白了。不清楚您所说的“组件”是指 Outlook 和 Office。我将组件理解为 Office 安装的组件,例如他们是否使用 VBA、Office PIA 等安装了 Office。我过去所做的是检查 HKEY_CLASSES_ROOT\Word.Application\\CurVer 以安装安装的版本寻找像 \Office\12.0\ 这样的硬编码路径
    • 我在考虑 MSI 术语。不过,感谢您对 HKCR 密钥的关注。这似乎很有用。
    • 我只是稍微研究了一下,看起来 HKCR 是一个用于 16 位兼容性的传统配置单元。 [HKLM|HKCU]\SOFTWARE\Classes 看起来是新的规范位置。
    【解决方案2】:

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

    【讨论】:

    • 您假设在安装应用程序时采用了默认设置。我有一个足够大且足够不同的环境,可以将 Office 安装在辅助存储卷上,或者其他一些类似的废话。我想确保考虑到该变量。
    猜你喜欢
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多