【发布时间】:2011-08-14 00:43:19
【问题描述】:
我正在使用一些代码在本机进程中启动 CLR 运行时,然后调用我的 .NET DLL 以在该进程中加载另一个 .NET 可执行文件。
要加载我正在使用反射的其他 .NET 可执行文件,如下所示:
Assembly.Load(file).EntryPoint.Invoke(null, null);
现在,我注入一个启动运行时的 C++ dll,然后它调用 .NET dll,后者使用 Assembly.Load 将另一个 .NET 可执行文件加载到内存中并执行它。
一旦 dll 加载我的 .NET 可执行文件,调用:
System.Reflection.Assembly.GetExecutingAssembly().Location;
甚至
Process.GetCurrentProcess().MainModule.FileName;
这当然会返回可执行文件本身的位置,即使它在另一个主机进程中运行。有什么方法可以获取该主机进程的名称吗?进程资源管理器显示它在主机进程中运行,所以我知道该部分工作正常。
当然,如果我要在首先加载的 .NET DLL 中运行这些命令,那么它将显示正确的进程名称。
谢谢。
编辑:
我也试过GetEntryAssembly() 和GetCallingAssembly()。
【问题讨论】:
标签: c#