簡體   English   中英

如何在程序集中獲取調用進程的名稱?

[英]How to get the calling process name inside an assembly?

我有一種方案,可以通過GUI應用程序和IIS托管應用程序調用程序集(即其中的輸入方法)。 我想根據調用哪個進程來執行一些操作(例如,如果GUI正在調用它,則將打開某些其他形式,而在IIS應用程序的情況下,將跳過此步驟)。

那么,有什么方法可以檢測哪個進程(在兩種情況下我都知道該進程的確切名稱)在entry方法中調用程序集?

我想執行以下操作

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

這很容易。 只需使用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);
}

不僅程序集,還可以獲取文件名,行等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM