Среди интерфейсов отладки есть ICorPublish
.
Вы можете использовать метод ICorPublish::GetProcess()
для извлечения экземпляра ICorPublishProcess
для процесса .NET (идентифицируется путем передачи соответствующего идентификатора процесса, который может быть идентификатором текущего процесса, конечно).
Этот интерфейс предоставляет метод ICorPublishProcess::EnumAppDomains()
, который вы можете использовать для получения списка текущих доменов приложений в целевом процессе с помощью счетчика до ICorPublishAppDomain
экземпляров. Каждый из них имеет метод ICorPublishAppDomain.GetName()
, который дает вам имя домена приложения.
Update: Я не пробовал это, но как насчет:
Используя подход выше перечислить приложения домены (в том числе получать свой уникальный идентификатор с помощью ICorPublishAppDomain.GetID()
).
Использование ICLRRuntimeHost::ExecuteInAppDomain
для фактического выполнения кода в этом домене (включая загрузку модуля, который вам нужен). Параметром (первым) AppDomainId
будет значение, которое вы получите от ICorPublishAppDomain.GetID()
.
Там, как представляется, по крайней мере, связанные, например, (CppHostCLR) о том, что в Microsoft All-In-One Code Framework над на CodePlex.com
Спасибо, христианин. Я буду помнить об этом интерфейсе, но это не совсем то, что мне нужно. Я хочу защитить (зашифровать) некоторые сетевые модули и загрузить их из неуправляемой dll. Поэтому мне нужно не только перечисление доменов, но и возможность загрузки некоторого кода в указанные домены. –