2

TL;DR; C++ アプリからサンドボックス化された AppDomain (CAS の構成) を作成するにはどうすればよいですか?

長いバージョン:

C++ アプリで .NET CLR をホストしていますが、すべて正常に動作しています...ただし、AppDomain には完全な信頼があり、できることをより細かく制御したいと考えています (つまり、PermissionSet の構成など)。 .) 損傷を引き起こす可能性のある未知のアセンブリをロードするためです。

これはその要点です:

// 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