Estoy usando algún código para iniciar CLR Runtime dentro de un proceso nativo, luego llamo a mi .NET DLL para cargar otro. NET ejecutable dentro de ese proceso.Agarrando el id/nombre del proceso que ejecutó mi ensamblado administrado/hosts CLR runtime (CLR runtime host location)
Para cargar otro ejecutable .NET estoy usando la reflexión, así:
Assembly.Load(file).EntryPoint.Invoke(null, null);
Ahora, me inyecto una DLL de C++ que inicia el tiempo de ejecución, a continuación, llama a la DLL de .NET que utiliza Asamblea. Cargue para cargar otro ejecutable de .NET en la memoria y ejecútelo.
Una vez que el DLL se carga mi ejecutable .NET, llamando al:
System.Reflection.Assembly.GetExecutingAssembly().Location;
o incluso
Process.GetCurrentProcess().MainModule.FileName;
Esto, por supuesto, devuelve la ubicación del propio ejecutable, a pesar de que su funcionamiento dentro de otro proceso de host. ¿Hay alguna manera de que pueda tomar el nombre de ese proceso de host? Process Explorer lo muestra como ejecutando dentro del proceso de host, así que sé que tengo esa parte funcionando correctamente.
Por supuesto, si tuviera que ejecutar estos comandos dentro de la DLL .NET que se cargó primero, entonces mostraría el nombre del proceso adecuado.
Gracias.
EDIT:
He tratado GetEntryAssembly()
y GetCallingAssembly()
también.
Lo siento por Lundberg, pero no puedo acreditarle la edición ya que StackOverflow no solucionará sus errores de accesibilidad. – Joshua