次の方法で共有


Office アプリケーションのインストール パスを見つける方法

概要

この記事では、Windows インストーラーを使用して Microsoft Office アプリケーションのインストール パスを見つける方法について説明します。

詳細情報

2000 を超えるバージョンの Microsoft Office では、インストール時にショートカット リンクにパス情報は含まれません。 これは、"初回使用時に実行" オプションを使用できるように行われます。 このオプションを使用すると、ショートカットが表示されますが、アプリケーションはハード ディスクにインストールされません。 ショートカットを初めてクリックすると、アプリケーションがインストールされます。

Windows インストーラーを使用して、インストールされている Office 2000 アプリケーションのパスを取得できます。 次の手順に従って、インストールされている Office アプリケーションのディレクトリを報告するコンソール アプリケーションを作成します。

サンプルのビルド

  1. Visual C++ で空のコンソール アプリケーションを作成します。

  2. main.cpp という名前の新しいファイルを作成し、次のコードをコード ウィンドウに貼り付けます。

    #include <windows.h>
    #include <msi.h>
    #include <ostream.h>
    
    const char *Word = "{CC29E963-7BC2-11D1-A921-00A0C91E2AA2}";
    const char *Excel = "{CC29E96F-7BC2-11D1-A921-00A0C91E2AA2}";
    const char *PowerPoint = "{CC29E94B-7BC2-11D1-A921-00A0C91E2AA2}";
    const char *Access = "{CC29E967-7BC2-11D1-A921-00A0C91E2AA2}";
    const char *Office = "{00000409-78E1-11D2-B60F-006097C998E7}";
    
    int main(void)
    {
    DWORD size = 300;
    INSTALLSTATE installstate;
    char *sPath;
    
    sPath = new char[size];
            installstate = MsiLocateComponent(Word,sPath,&size);
    
    if ((installstate == INSTALLSTATE_LOCAL) || 
             (installstate == INSTALLSTATE_SOURCE)) 
    cout << "Installed in: " << sPath << endl;
    delete sPath;
    return 0;
    }
    
  3. [プロジェクト] メニューをクリックし、[設定] をクリックしてプロジェクト設定ダイアログ ボックスを表示します。

  4. [リンク] タブをクリックし、オブジェクト/ライブラリ モジュールの一覧に msi.lib を追加します。

  5. プログラムを実行します。 Microsoft Word がインストールされているファイル パスが表示されます。

注:

コードには、Word、Excel、PowerPoint、Access に関連付けられている GUID が含まれています。 別の Office アプリケーションのパスを見つけるには、MsiGetComponentPath 関数の 2 番目のパラメーターとしてアプリケーションの名前を渡します。

Office XP アプリケーションのパスを見つけるには、上記の定数を次の定数に置き換えます。

const char *Word = "{8E46FEFA-D973-6294-B305-E968CEDFFCB9}";
const char *Excel = "{5572D282-F5E5-11D3-A8E8-0060083FD8D3}";
const char *PowerPoint = "{FC780C4C-F066-40E0-B720-DA0F779B81A9}";
const char *Access = "{CC29E967-7BC2-11D1-A921-00A0C91E2AA3}";
const char *Office = "{20280409-6000-11D3-8CFE-0050048383C9}";

Office 2003 アプリケーションのパスを見つけるには、上記の定数を次の定数に置き換えます。

const char *Word = "{1EBDE4BC-9A51-4630-B541-2561FA45CCC5}";
const char *Excel = "{A2B280D4-20FB-4720-99F7-40C09FBCE10A}";
const char *PowerPoint = "{C86C0B92-63C0-4E35-8605-281275C21F97}";
const char *Access = "{F2D782F8-6B14-4FA4-8FBA-565CDDB9B2A8}";
const char *Office = "{90110409-6000-11D3-8CFE-0150048383C9}";

2007 Office アプリケーションのパスを見つけるには、上記の定数を次のように置き換えます。

const char *Word = "{0638C49D-BB8B-4CD1-B191-051E8F325736}";
const char *Excel = "{0638C49D-BB8B-4CD1-B191-052E8F325736}";
const char *PowerPoint = "{0638C49D-BB8B-4CD1-B191-053E8F325736}";
const char *Access = "{0638C49D-BB8B-4CD1-B191-054E8F325736}";
const char *Office = "{0638C49D-BB8B-4CD1-B191-050E8F325736}";

32 ビット Office 2010 アプリケーションのパスを見つけるには、上記の定数を次のように置き換えます。

const char *Word = "{019C826E-445A-4649-A5B0-0BF08FCC4EEE}"; 
const char *Excel = "{538F6C89-2AD5-4006-8154-C6670774E980}";
const char *PowerPoint = "{E72E0D20-0D63-438B-BC71-92AB9F9E8B54}";
const char *Access = "{AE393348-E564-4894-B8C5-EBBC5E72EFC6}";
const char *Office = "{398E906A-826B-48DD-9791-549C649CACE5}";

64 ビット Office 2010 アプリケーションのパスを見つけるには、上記の定数を次のように置き換えます。

const char *Word = "{C0AC079D-A84B-4CBD-8DBA-F1BB44146899}"; 
const char *Excel = "{8B1BF0B4-A1CA-4656-AA46-D11C50BC55A4}";
const char *PowerPoint = "{EE8D8E0A-D905-401D-9BC3-0D20156D5E30}";
const char *Access = "{02F5CBEC-E7B5-4FC1-BD72-6043152BD1D4}";
const char *Office = "{E6AC97ED-6651-4C00-A8FE-790DB0485859}";