TL; DR;如何从C ++应用程序创建沙盒AppDomain(配置CAS)?
长版:
我在C ++应用程序中托管.NET CLR并且一切正常......但是,我的AppDomain完全信任,我希望能够更细致地控制它的内容do(即配置PermissionSets等),因为我将加载可能造成损害的未知程序集。
这是它的要点:
// Create instance (CLRCreateInstance)
// Get meta-host, CorRuntimeHost, etc.
// Start the CLR
// ...
最终,我拥有创建AppDomain所需的一切(请假装我实际上正在处理异常,测试每个调用的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)
赞赏任何想法或代码示例。