我正在使用一些代碼在本機進程中啓動CLR運行時,然後調用.NET DLL加載另一個。該進程中的.NET可執行文件。抓取執行我的託管程序集/主機CLR運行時(CLR運行時主機位置)的進程ID /名稱
要加載我使用反射,其他.NET可執行文件,像這樣:
Assembly.Load(file).EntryPoint.Invoke(null, null);
現在,我注入了C++ DLL啓動運行,然後調用它採用集的.NET的DLL。加載將另一個.NET可執行文件加載到內存中並執行它。
一旦DLL加載我的。NET的可執行文件,美其名曰:
System.Reflection.Assembly.GetExecutingAssembly().Location;
甚至
Process.GetCurrentProcess().MainModule.FileName;
這當然,返回的可執行文件本身的位置,儘管其內部運行的另一個主機進程。有什麼方法可以獲取該主機進程的名稱?進程資源管理器顯示它在主機進程內運行,所以我知道我的那部分工作正常。
當然,如果我要在首先加載的.NET DLL中運行這些命令,那麼它會顯示正確的進程名稱。
謝謝。
編輯:
我試圖GetEntryAssembly()
和GetCallingAssembly()
爲好。
對不起,Per Lundberg,但我不能信任你編輯,因爲StackOverflow不會修復他們的可訪問性錯誤。 – Joshua