在C ++应用程序中托管.NET CLR:沙盒应用程序域(CAS)

时间:2015-12-02 03:30:15

标签: c++ .net clr com-interop clr-hosting

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)

赞赏任何想法或代码示例。

0 个答案:

没有答案