Как я могу получить имя исполняемого .exe? - PullRequest
4 голосов
/ 25 августа 2008

Компактный каркас не поддерживает Assembly.GetEntryAssembly для определения запуска .exe. Так есть ли другой способ получить имя исполняемого файла .exe?

РЕДАКТИРОВАТЬ: я нашел ответ в блоге Питера Фут: 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);

Ответы [ 3 ]

4 голосов
/ 25 августа 2008

Я не уверен, работает ли он из управляемого кода (или даже компактной среды), но в Win32 вы можете вызвать GetModuleFileName, чтобы найти исполняемый exe-файл.

MSDN: GetModuleFileName

1 голос
/ 23 сентября 2008
string exefile = Assembly.GetExecutingAssembly().GetName().CodeBase;

Но если вы поместите его в сборку DLL, я думаю, что это даст вам имя файла сборки.

Тот же самый вызов в «полной» платформе вернул бы файл .exe с префиксом «file: \».

0 голосов
/ 25 августа 2008

В управляемом коде, я думаю, вы можете использовать это: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx

Application.ExecutablePath

...