Pertanyaan Bagaimana saya bisa mendapatkan nama file .exe?


Kerangka Kerja Kompak tidak mendukung Assembly.GetEntryAssembly untuk menentukan peluncuran .exe. Jadi apakah ada cara lain untuk mendapatkan nama execute.exe?

EDIT: Saya menemukan jawabannya di blog Peter Foot: http://peterfoot.net/default.aspx Berikut ini kodenya:

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);

4
2017-08-25 12:51


asal


Jawaban:


Saya tidak yakin apakah itu bekerja dari kode yang dikelola (atau bahkan kerangka yang ringkas), tetapi di Win32 Anda dapat memanggil GetModuleFileName untuk menemukan file exe yang berjalan.

MSDN: GetModuleFileName


4
2017-08-25 12:56



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

Tetapi jika Anda memasukkannya ke dalam kumpulan DLL, saya yakin ini akan memberi Anda nama file assembly.

Panggilan yang sama pada kerangka "Penuh" akan mengembalikan file .exe dengan awalan "file: \".


1
2017-09-22 20:53



Dalam kode yang dikelola, saya pikir Anda dapat menggunakan ini: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx

Application.ExecutablePath


0
2017-08-25 12:59