.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」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間