2

特定のワークステーションに Microsoft Office のどのコンポーネントがインストールされているかを検出する最も安全な方法を探しています。これは Serverfault に関する質問と見なされることもあると思いますが、これをスクリプトで使用するので、ここにいる多くの人は Office の内部動作に精通しているため、ここで質問するのが最適だと思いました.

アンインストール キーを確認しましたが、実際にはシステムに存在しないコンポーネントが表示されています。これは、最初のアクセス時に Office がコンポーネントをインストールできる方法に関係していると思います。パスは理論的に変更される可能性があるため、実行可能ファイルを探すのは好きではありません。

4

2 に答える 2

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 がインストールされているかどうかを検出します。

私はこれ以上の粒度を得ようとはしていません。

于 2012-07-09T18:03:49.337 に答える
0

exeまたはdllへのパスに頼ることができないと本当に思う場合は、さまざまなコンポーネントのインストールのスナップショットの前後のレジストリ(このための多くのツールが存在します)を比較します。ただし、私の経験では、Officeにインストールされているコンポーネントを検出するためにdllやその他のファイルの存在をテストする必要があります(たとえば、インストールされているVisualBasicモジュールの存在を検出するためにVBAdllをテストする必要がありました)。ファイルのパスはそれほど変更することはできません。32ビットと64ビットのパッチ、およびwinxpとwin7のパスを認識している必要があります。

于 2012-07-01T04:28:00.393 に答える