¿Cómo puedo obtener el nombre del .exe en ejecución?
-
09-06-2019 - |
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);
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.
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