Hoe kan ek die naam van die uitvoering van exe?
-
09-06-2019 - |
Vra
Die Framework ondersteun nie Assembly.GetEntryAssembly om die bekendstelling exe bepaal. So is daar 'n ander manier om die naam van die uitvoering van exe kry?
EDIT: Ek het gevind dat die antwoord op blog Peter Foot se: http://peterfoot.net/default.aspx 'n> Hier is die kode:
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);
Oplossing
Ek is nie seker of dit werk uit beheer kode (of selfs die kompakte raamwerk), maar in Win32 jy kan GetModuleFileName bel om die loop exe-lêer te vind.
Ander wenke
string exefile = Assembly.GetExecutingAssembly().GetName().CodeBase;
Maar as jy dit in 'n DLL vergadering, ek glo dit sal jy die naam vergadering lêer gee.
Dieselfde oproep op die "Full" raamwerk sal die exe-lêer terug met 'n "lêer: \". Voorvoegsel
In beheer kode, ek dink jy kan dit gebruik: http://msdn.microsoft.com/ en-ons / library / system.windows.forms.application.executablepath.aspx
Application.ExecutablePath