実行中の .exe の名前を取得するにはどうすればよいですか?
-
09-06-2019 - |
質問
Compact Framework は、.exe の起動を決定するための Assembly.GetEntryAssembly をサポートしていません。それでは、実行中の.exeの名前を取得する別の方法はありますか?
編集:Peter Foot のブログで答えを見つけました。 http://peterfoot.net/default.aspxコードは次のとおりです。
byte[] buffer = new byte[MAX_PATH * 2];
int chars = GetModuleFileName(IntPtr.Zero, buffer, MAX_PATH);
if (chars > 0)
{
string assemblyPath = System.Text.Encoding.Unicode.GetString(buffer, 0, chars * 2);
}
[DllImport("coredll.dll", SetLastError = true)]
private static extern int GetModuleFileName(IntPtr hModule, byte[] lpFilename, int nSize);
解決
マネージ コード (またはコンパクト フレームワーク) から動作するかどうかはわかりませんが、Win32 では GetModuleFileName を呼び出して実行中の exe ファイルを見つけることができます。
他のヒント
string exefile = Assembly.GetExecutingAssembly().GetName().CodeBase;
ただし、DLLアセンブリに配置すると、アセンブリファイル名が与えられると思います。
「完全」フレームワークで同じ呼び出しを行うと、「file:\」プレフィックスが付いた .exe ファイルが返されます。
マネージコードでは、これを使用できると思います:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx
アプリケーション.実行可能パス
所属していません StackOverflow