如何在程序集中获取调用进程名称?

时间:2016-06-29 05:21:55

标签: c# process .net-assembly

我有一个场景,可以通过GUI应用程序和IIS托管应用程序调用程序集(即其中的入口方法)。我想根据调用它的进程执行一些操作(如果GUI调用它,在IIS应用程序的情况下将打开一些其他表单,将跳过此步骤。)

那么,有什么方法可以检测哪个进程(我知道进程的确切名称,在这两种情况下)都是在entry方法中调用程序集?

我想执行类似下面的内容

        if (processName == "wpw3.exe")
        {
            LogWindow log = new LogWindow();
            log.Show();
        }
        if (processName == "GUIApplication.exe")
        {
            WriteToLogFile(LogData);
        }

1 个答案:

答案 0 :(得分:1)

很容易。只需使用StackTrace

var stackTrace = new StackTrace();

var assemblies = stackTrace.GetFrames().Select(t =>
{
    var method = t.GetMethod();
    return method.DeclaringType.Assembly;
});

foreach (var assembly in assemblies)
{
    Console.WriteLine(assembly.FullName);
}

不仅是程序集,还可以获取文件名,行等。