4

Compact Framework は、Assembly.GetEntryAssembly をサポートしていないため、起動中の .exe を特定できません。実行中の .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);
4

3 に答える 3

4

マネージ コード (またはコンパクト フレームワーク) から動作するかどうかはわかりませんが、Win32 では GetModuleFileName を呼び出して、実行中の exe ファイルを見つけることができます。

MSDN: GetModuleFileName

于 2008-08-25T12:56:35.267 に答える
1
string exefile = Assembly.GetExecutingAssembly().GetName().CodeBase;

しかし、それを DLL アセンブリに入れると、アセンブリ ファイル名が表示されると思います。

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

于 2008-09-22T20:53:05.643 に答える
0

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

Application.ExecutablePath

于 2008-08-25T12:59:02.063 に答える