gpt4 book ai didi

c# - 如何更改 AppDomain 的权限?

转载 作者:行者123 更新时间:2023-11-30 21:11:19 25 4
gpt4 key购买 nike

我使用特殊方法创建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)。保持插件沙盒化,绑定(bind)到您在创建自定义 AppDomain 时定义的 PermissionSet,并通过常用的安全关键类库提供高级功能(需要提升权限)。

另请参阅此处的答案和提示: http://social.msdn.microsoft.com/Forums/en-US/clr/thread/23a9197e-3581-4a28-912d-968004488773

关于c# - 如何更改 AppDomain 的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8107162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com