Вопрос

Compact Framework не поддерживает метод 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);
Это было полезно?

Решение

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

MSDN:GetModuleFileName

Другие советы

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

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

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

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

Приложение.ExecutablePath

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top