TL; DR; Как я могу создать изолированную AppDomain (настройку CAS) из приложения C ++?
Длинная версия:
Я размещаю .NET CLR в приложении C ++, и все работает нормально … Однако мой домен приложений полностью доверяет, и я хотел бы иметь более детальный контроль над тем, что он может делать (например, настраивать PermissionSets и т. Д.). .) так как я буду загружать неизвестные сборки, которые потенциально могут привести к повреждению.
Это суть этого:
// Create instance (CLRCreateInstance)
// Get meta-host, CorRuntimeHost, etc.
// Start the CLR
// ...
В конце концов у меня есть все, что мне нужно для создания домена приложений (пожалуйста, сделайте вид, что я на самом деле обрабатываю исключения, тестирую HRESULT для каждого из этих вызовов и т. Д.):
pCorRuntimeHost->CreateDomainSetup(&spAppDomainSetupThunk);
spAppDomainSetupThunk->QueryInterface(IID_PPV_ARGS(&spAppDomainSetup));
spAppDomainSetup->put_ApplicationBase(_bstr_t(L"C:\\PretendThisIsNotHardCoded"));
spAppDomainSetup->put_ApplicationName(appDomainName);
pCorRuntimeHost->CreateDomainEx(appDomainName, spAppDomainSetupThunk, 0, &spAppDomainThunk);
spAppDomainThunk->QueryInterface(IID_PPV_ARGS(&spAppDomain));
// AppDomain ready to go, and full trust (at least on .NET 4)
Любые идеи или примеры кода приветствуются.
Задача ещё не решена.
Других решений пока нет …