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);
È stato utile?

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.

MSDN:OttieniNomeFileModulo

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top