質問

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 ファイルを見つけることができます。

MSDN:Getモジュールファイル名

他のヒント

string exefile = Assembly.GetExecutingAssembly().GetName().CodeBase;

ただし、DLLアセンブリに配置すると、アセンブリファイル名が与えられると思います。

「完全」フレームワークで同じ呼び出しを行うと、「file:\」プレフィックスが付いた .exe ファイルが返されます。

マネージコードでは、これを使用できると思います:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx

アプリケーション.実行可能パス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top