Frage

Die Compact Framework unterstützt nicht die Montage.GetEntryAssembly zu bestimmen, die gestartet wird .exe.So gibt es einen anderen Weg, um den Namen des ausführenden .exe-Datei?

EDIT:Ich fand die Antwort auf Peter Foot blog: http://peterfoot.net/default.aspx Hier ist der code:

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);
War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob es funktioniert, die von verwaltetem code (oder auch die compact framework), aber in der Win32-aufrufen können Sie GetModuleFileName zu finden, der Laufenden exe-Datei.

MSDN:GetModuleFileName

Andere Tipps

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

Aber wenn man es in eine DLL-assembly, ich glaube, es wird geben Sie die assembly-Datei-Namen.

Das gleiche fordern die "Full" framework würde zurückgeben .exe-Datei mit "file:\" Präfix.

In managed code, ich glaube, diese können Sie verwenden:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx

Anwendung.ExecutablePath

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top