Come posso ottenere il nome del file .exe in esecuzione?
-
09-06-2019 - |
Domanda
Il framework compatto non supporta Assembly.GetEntryAssembly per determinare il file .exe di avvio.Quindi esiste un altro modo per ottenere il nome del file .exe in esecuzione?
MODIFICARE:Ho trovato la risposta sul blog di Peter Foot: http://peterfoot.net/default.aspxEcco il codice:
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);
Soluzione
Non sono sicuro che funzioni dal codice gestito (o anche dal framework compatto), ma in Win32 puoi chiamare GetModuleFileName per trovare il file exe in esecuzione.
Altri suggerimenti
string exefile = Assembly.GetExecutingAssembly().GetName().CodeBase;
Ma se lo inserisci in un assembly DLL, credo che ti darà il nome del file assembly.
La stessa chiamata sul framework "Full" restituirebbe il file .exe con il prefisso "file:\".
Nel codice gestito, penso che tu possa usare questo:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx
Application.ExecutablePath