[英]How to change permissions of AppDomain?
我使用特殊的方法來創建sandobx:
internal static class Helper
{
public static AppDomain CreateSandbox()
{
Contract.Ensures(Contract.Result<AppDomain>() != null);
var platform = Assembly.GetExecutingAssembly();
var name = platform.FullName + ": Sandbox " + Guid.NewGuid();
var setup = new AppDomainSetup { ApplicationBase = platform.Location };
var permissions = new PermissionSet(PermissionState.None);
permissions.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read | FileIOPermissionAccess.PathDiscovery, platform.Location));
var sandbox = AppDomain.CreateDomain(name, null, setup, permissions);
Contract.Assume(sandbox != null);
return sandbox;
}
}
使用創建的沙箱時,我想更改其權限:
sandbox = Security.Helper.CreateSandbox();
sandbox.SetupInformation.ApplicationBase = Path.GetDirectoryName(path);
sandbox.PermissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read | FileIOPermissionAccess.PathDiscovery, path));
但是,當我向其加載程序集時,會收到異常:
“ 請求類型為'System.Security.Permissions.FileIOPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的權限失敗。 “
創建后如何更改AppDomain的權限?
在同構的AppDomain中,唯一允許的權限集是FullTrust和創建域時定義的權限集。 一旦被授予,權限集將無法再擴展(AFAIK)。 使插件保持沙盒狀態,與創建自定義AppDomain時定義的PermissionSet綁定,並通過常用的安全性關鍵類庫提供高級功能(需要提升的權限)。
另請參閱此處的答案和提示: http : //social.msdn.microsoft.com/Forums/en-US/clr/thread/23a9197e-3581-4a28-912d-968004488773
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.