• ベストアンサー

アプリケーションのインストール先のパスを取得する方法について。

訳あって、他の製品のアプリケーションを起動するプログラムを作っています。 そこで、アプリケーションのインストール先(パス)を取得する方法はないでしょうか? (たとえば、EXCELだとF:\Program Files\Microsoft Office\Office\EXCEL.EXE) APIなどでも調べてみたのですが、見あたりません。フォームを持たないプログラムなので、可能なら自動的に調べてパスを特定したいと考えています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xruz
  • ベストアンサー率50% (72/143)
回答No.1

レジストリにアクセスするしか方法が無いと思いますが。。。 確か\HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\Windows\CurrentVersion\App Paths配下にあったはずです。 VBでレジストリへアクセスする方法は知りませんのでゴメンナサイ。

shigeki-yy
質問者

お礼

早速の回答ありがとうございます。 そうですね。単純にインストール先を取得するには、やっぱりレジストリを参照するしかなさそうな気がします。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

(1)ShellExecute関数 そもそもフルパスを取得する必要があるのか? 大抵のアプリはパスなしのEXE名("Excel.exe"等)をShellExecute関数に指定すれば動きます (2)FindExecutable関数 xlsファイルをFindExecutable関数に渡せばExecelのフルパス名が分かります http://www.vbvbvb.com/jp/gtips/0951/gFindExecutable.html (3)SearchPath関数 "Excel.exe"を検索する http://www.vbvbvb.com/jp/gtips/0101/gSearchPath.html

shigeki-yy
質問者

お礼

回答、ありがとうございます。参考になりました。 しかし。 (1)ShellExecute関数  残念ながら呼び出したいプログラムは、EXE名のみでは実行できず。 (2)FindExecutable関数  関連づけられている拡張子もないため、この手も使えず。   なので、考えられるとしたら、(3)SearchPath関数ですが、この方法だとローカルディスクの全領域を調べるとしたら、結構な時間がかかってしまうため、あんまり使いたくありません。  単純にインストール先を取得するには、xruzさんが言うようにレジストリを参照するしかないような気がします。

関連するQ&A

  • エクセルのフルパスをvbaで取得

    当方エクセル2003で、 エクセルのフルパスは C:\Program Files\Microsoft Office\OFFICE11\ EXCEL.EXE です。 それをVBAで取得するにはどうすればいいですか? Sub サンプル() Debug.Print 'オフィスがインストールされているフォルダのパスの取得 End Sub のようにして、 C:\Program Files\Microsoft Office\OFFICE11\ EXCEL.EXE を返したいです。 VBAコードをご教示ください。

  • 実行中の他のアプリのパスの取得方法

    実行中の他のアプリのパスを取得する方法を教えてください。 プロセスの一覧の取得はできるんですが、インストールされている場所が取得できません。 例えば「エクセル」だとプロセス名の「EXCEL」は取得できるんですが、「C:\Program Files\Microsoft Office\Office\EXCEL.EXE」も取得したいのです。 例えば「メモ帳l」だとプロセス名の「notepad」は取得できるんですが、「C:WINDOWS\system32\notepad.exe」も取得したいのです。 検索してみてるんですが、ありそうでないんです。 OSはWindowsXP、VisualBasic2008で取得したいのです。 よろしくお願いします。

  • あるアプリケーションがインストールいるパスを知る方法

    あるアプリケーションがインストールされているかどうか知りたい場合 そして、インストールされている場合には そのパスを知りたいのですが 今、思っているのは そのアプリケーション独自の拡張子のファイルを扱う場合 関連付けられているアプリケーションのパスを取得する APIのFindExecutable で、いけますよね? このほかに コントロールパネルの「プログラムの追加と削除」(XPの場合) にあるアプリケーションの中に 調べたいアプリケーションがあるかどうか見て パスも取得できないかな と思ったのですが これはどうすればできるでしょうか? 別に言語はC以外でもいいのですが… よろしくお願いします

  • EXCEL2000と2003の共存について

    特定のファイルだけEXCEL2000で起動し、その他のEXCELのファイルはEXCEL2003で起動したいと思います。 EXCEL2000とEXCEL2003はそれぞれC:\Program Files\Microsoft Office 2000\OfficeとC:\Program Files\Microsoft Office 2003\Officeにインストールされています。 ショートカットをダブルクリックするとEXCEL2003で起動できるのですが、特定のファイルはEXCEL2003で起動されると困るので、バッチファイルを作りました。 cd C:\Program Files\Microsoft Office 2000\Office EXCEL.EXE C:\EXCEL\AAA.XLS これだとEXCEL2000で起動されるのですが、DOSの窓が終了しないので困っています。 何か対処方法はないでしょうか? よろしくお願いします。

  • Access2007のマクロ

    Access2007のフォーム画面でコマンドボタンを貼り付けこれをクリックするとExcel2007が開くマクロに以下のパス名を書き入れてこれを開くにはマクロの何という項目にこの引数を入れればよいのか教えて下さい。 C:\Program Files\Microsoft Office\Office12\EXCEL.EXE D:\Excel\A_SHOKU\shoku2008.xlsm よろしくお願いします。

  • Accessフォームからの外部アプリ起動方法

    お世話になります。 掲題の件、Accessのフォームからボタンをクリックし、 外部アプリケーション(たとえばExcel等)を起動する ことは可能でしょうか? 起動可能であればどのようなVBA記述をしたら良いか 教えて頂けたら幸いです。 [作成環境] 起動ボタン名: 起動 Excelのパス :  C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE 以上、宜しくお願い致します。

  • 表示されているファイルの完全パスの取得

    Windows上で、最前面に表示されているOfficeファイルの 完全パスを取得したいのですが、方法がわかりません。 GetForegroundWindowにてハンドルを取得し、 GetWindowThreadProcessId → EnumProcessModules → GetModuleFileNameExで、取得できるのは当然のことながら、 起動したOfficeアプリの完全パス(C:\Program Files~\POWERPNT.EXE等)に なってしまいます。 取得したいのは、アプリの完全パスではなく、 ファイル自体の完全パス(C:\Documents and Setting~新規ファイル.ppt等)なんですが、 どうにかして、最前面に表示されているウィンドウ(Officeアプリ)から 表示しているファイル自体の完全パスを取得する方法はないでしょうか? よろしくお願いします。 開発環境:Visual Studio2008 / C++プロジェクト

  • アクセスでは、一つのアプリケーションに対して、一つ

    エクセルは、一つのアプリケーション内で複数のブックを開くことが可能ですが、 アクセスでは、一つのアプリケーションに対して、一つのファイルしか開けないのでしょうか? ここで言う「ひとつのアプリケーション」と言うのは、 スタート→すべてのプログラム→Microsoft Office Excel 2007を押した事です。

  • ブックなしの空のアプリケーションだけ立ち上げたい

    win7、エクセル2007を入れています、 スタート→すべてのプログラム →Microsoft Office Excel 2007 でエクセルを新規で立ちあげた時に、 アプリケーションの中に、保存してないBook1が表示されますが、 Bookを作らない方法はありますか? やりたい事は、 スタート→すべてのプログラム →Microsoft Office Excel 2007 で、エクセルのブックなしの空のアプリケーションだけ立ち上げたいです。 ご教授よろしくお願いします。

  • 別窓でExcelアプリケーションを開きたい

    ブックではなく、別窓でExcelアプリケーションを開きたいです。 VBAで別窓でExcelアプリケーションを開きたいのですが、 どのようなコードを書けばいいのでしょうか? やりたいこととしては、 スタートメニューからすべてのプログラム→Microsoft Office→Microsoft Office Excel 2003 を開くことと同じことをVBAでやりたいです。 そしてタスクバーに Microsoft Excelを二つ表示させたいです。 二つというのは、一つ目のExcelアプリケーションは、 もうひとつのアプリケーションを開くVBAを実行し、 二つにしたいということです。 ご教授よろしくお願い致します。

専門家に質問してみよう