سؤال

الاتفاق الإطار لا دعم الجمعية.GetEntryAssembly لتحديد المطلقة .exe.فهل هناك طريقة أخرى للحصول على اسم المنفذة .exe ؟

تحرير:وجدت الجواب على بيتر القدم بلوق: http://peterfoot.net/default.aspx هنا هو رمز:

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);
هل كانت مفيدة؟

المحلول

أنا لست متأكدا ما إذا كان يعمل من التعليمات البرمجية المدارة (أو حتى الاتفاق الإطاري) ، ولكن في Win32 يمكنك الاتصال GetModuleFileName للعثور على تشغيل ملف exe.

MSDN:GetModuleFileName

نصائح أخرى

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

ولكن إذا وضعته في DLL الجمعية ، وأعتقد أنه سوف تعطيك الجمعية اسم الملف.

نفس الكلمة "الكامل" إطار العودة .exe ملف "file:\" البادئة.

في التعليمات البرمجية المدارة, أعتقد يمكنك استخدام هذا:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx

التطبيق.ExecutablePath

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top