Pregunta

Compact Framework no admite Assembly.GetEntryAssembly para determinar el .exe de inicio.Entonces, ¿hay otra forma de obtener el nombre del .exe en ejecución?

EDITAR:Encontré la respuesta en el blog de Peter Foot: http://peterfoot.net/default.aspxAquí está el código:

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);
¿Fue útil?

Solución

No estoy seguro de si funciona desde código administrado (o incluso desde el marco compacto), pero en Win32 puede llamar a GetModuleFileName para encontrar el archivo exe en ejecución.

MSDN:Obtener nombre de archivo del módulo

Otros consejos

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

Pero si lo coloca en un ensamblado DLL, creo que le dará el nombre del archivo del ensamblado.

La misma llamada en el marco "Completo" devolvería el archivo .exe con un prefijo "archivo:\".

En código administrado, creo que puedes usar esto:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx

Aplicación.Ruta ejecutable

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top