2

TL;博士; 如何从 C++ 应用程序创建沙盒化 AppDomain(配置 CAS)?

长版:

我在 C++ 应用程序中托管 .NET CLR,一切正常……但是,我的 AppDomain 完全信任,我希望对它可以做的事情有更精细的控制(即配置 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)

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

4

0 回答 0