네이티브 프로세스 내에서 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()
을 시도
.
죄송합니다. Lundberg에게 미안하지만, StackOverflow는 접근성 버그를 수정하지 않으므로 편집 해 줄 수는 없습니다. – Joshua