.NET TIPS

実行ファイルのパスを取得するには?

デジタルアドバンテージ
2003/04/18

 アプリケーション実行時の実行可能ファイル(exeファイル)のパスを取得するには、主に次の2通りの方法がある。

Assemblyクラスを利用したパスの取得

 1つはアセンブリ情報からパスを得る方法だ(アセンブリについては「インサイド .NET Framework 第1回」を参照)。これにはまず、Assemblyクラス(System.Reflection名前空間)のGetEntryAssemblyメソッドにより、エントリ・ポイントを含むアセンブリ(Assemblyオブジェクト)を取得する。多くのexeファイルにおいては、これはMainメソッドを含んだアセンブリとなっている。

 そして、そのAssemblyオブジェクトのLocationプロパティから、実行されているアプリケーションの完全パス(フルパス)を取得することができる。

Assembly myAssembly = Assembly.GetEntryAssembly();
string path = myAssembly.Location;

 次のサンプル・プログラムでは、このようにして取得したフルパスを画面に表示している。

// exepath1.cs

using System;
using System.Reflection;

class ExePath1 {
  public static void Main() {

    Assembly myAssembly = Assembly.GetEntryAssembly();
    string path = myAssembly.Location;

    Console.WriteLine(path);
    // 出力例:c:\c#\tips\016exepath\exepath1.exe
  }
}
// コンパイル方法:csc exepath1.cs
実行ファイルのフルパスを表示するC#のサンプル・プログラム(exepath1.cs)

 GetEntryAssemblyメソッドではなく、GetExecutingAssemblyメソッドを使用すると、現在のコードを実行しているアセンブリ(Assemblyオブジェクト)を取得することができる。

 MSDNのドキュメント「App Object Changes in Visual Basic .NET」では、Visual Basic 6.0におけるApp.PathやApp.EXENameと等価となる方法として、こちらのメソッドを使用したやり方が紹介されている。ただし、アセンブリの構成にもよるが、ライブラリの中でこの方法によりパスを取得した場合などでは、ライブラリ・ファイルへのパスとなることがある点に注意が必要だ。

Applicationクラスを利用したパスの取得

 Applicationクラス(System.Windows.Forms名前空間)のExecutablePathプロパティを使用すると、アプリケーションを開始したパスを取得することができる。

string path = Application.ExecutablePath;

 次のサンプル・プログラムは、この方法により実行時のフルパスを表示する。

// exepath2.cs

using System;
using System.Windows.Forms;

class ExePath2 {
  public static void Main() {

    string path = Application.ExecutablePath;

    Console.WriteLine(path);
    // 出力例:c:\c#\tips\016exepath\exepath2.exe
  }
}
// コンパイル方法:csc exepath2.cs
実行ファイルのフルパスを表示するサンプル・プログラム(exepath2.cs)

 Applicationクラスは、名前空間がSystem.Windows.Formsとなっているが、Windowsアプリケーション以外の形式のアプリケーションからも呼び出すことは可能だ。End of Article

カテゴリ:クラス・ライブラリ 処理対象:パス
使用ライブラリ:Assemblyクラス(System.Reflection名前空間)
使用ライブラリ:Applicationクラス(System.Windows.Forms名前空間)
 
この記事と関連性の高い別の.NET TIPS
[ASP.NET]ASP.NETでVB.NET固有の関数をC#から利用するには?
バージョン情報ダイアログを作成するには?
プログラムからソース・コードをコンパイルして実行するには?
文字列で指定したクラスのインスタンスを作成するには?
コマンドライン引数を取得するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH