.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;
次のサンプル・プログラムでは、このようにして取得したフルパスを画面に表示している。
|
|
実行ファイルのフルパスを表示する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) | |
Applicationクラスは、名前空間がSystem.Windows.Formsとなっているが、Windowsアプリケーション以外の形式のアプリケーションからも呼び出すことは可能だ。
カテゴリ:クラス・ライブラリ 処理対象:パス 使用ライブラリ:Assemblyクラス(System.Reflection名前空間) 使用ライブラリ:Applicationクラス(System.Windows.Forms名前空間) |
|
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|