如何获取正在执行的.exe的名称?

时间:2008-08-25 12:51:33

标签: .net compact-framework windows-ce

Compact Framework不支持Assembly.GetEntryAssembly来确定启动.exe。那么有另一种方法来获取正在执行的.exe的名称吗?

编辑:我在Peter Foot的博客上找到答案: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);

3 个答案:

答案 0 :(得分:4)

我不确定它是否适用于托管代码(甚至紧凑框架),但在Win32中,您可以调用GetModuleFileName来查找正在运行的exe文件。

MSDN: GetModuleFileName

答案 1 :(得分:1)

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

但是如果你把它放在DLL程序集中,我相信它会给你汇编文件名。

“Full”框架上的相同调用将返回带有“file:\”前缀的.exe文件。

答案 2 :(得分:0)

在托管代码中,我认为您可以使用此代码: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx

Application.ExecutablePath