Microsoft Officeのインストールされているコンポーネントを検出する安全な方法は何ですか?
-
13-12-2019 - |
質問
Microsoft Officeのどのコンポーネントがある場合は、特定のワークステーションにインストールされているかを検出する最も安全な方法を探しています。これはServerfaultの質問と見なすこともできますが、これをスクリプトで使用し、多くの人がOfficeの内部動作に精通しているため、これが質問するのに最適な場
私はアンインストールキーを見てきましたが、実際にはシステム上に存在しないコンポーネントを示しています。これは、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
-Outlookのインストールパスを示すキーOffice base path
\Registration\{90120000-0012-0000-0000-0000000FF1CE}
-オフィス12標準的なGUIDのためのキーOffice base path
\Registration\{90120000-0011-0000-0000-0000000FF1CE}
-GUIDとオフィス12の専門家のためのキー
これらの場所で私はすることができました:
- Officeがインストールされているかどうかを検出します。
- インストールされているOfficeのバージョンを検出します。
- Outlookがインストールされているかどうかを検出します。
私はこれ以上粒状にしようとはしていません。
他のヒント
EXEまたはDLLへのパスに頼ることができないと思う場合は、さまざまなコンポーネントをインストールするスナップショットの前後のレジストリ(これが存在するさまざまなツール)を差し込みます。しかし、私の経験では、オフィスのためのインストールされたコンポーネントを検出するためのDLLと他のファイルの存在をテストする必要があります(たとえば、Visual Basic Moduleの存在を検出するためにVBA DLLをテストしなければなりませんでした)。ファイルのパスはそれほど変化することができるだけです。32ビットと64ビットのパッチ適用、WinXPとWin7 Pathingの認識人である必要があります。