【问题标题】:Loading An Assembly Into An Application Domain With Lower Security将程序集加载到安全性较低的应用程序域中
【发布时间】:2012-02-23 11:34:22
【问题描述】:

我正在尝试创建一个对文件系统具有只读访问权限的沙盒应用程序域。我为此编写的代码是

    var ps = new PermissionSet(PermissionState.None);
    ps.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
    var f = new FileIOPermission(PermissionState.None);
    f.AllLocalFiles = FileIOPermissionAccess.Read;
    ps.AddPermission(f);

    AppDomain domain = AppDomain.CreateDomain("MyDomain",
        null,
        new AppDomainSetup { ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) },
        ps                
        );
    string pathToDll = @"c:\temp\test.dll";
    string thirdPartyFullName = "MyTest.Test";
    IPlugin myObject = (IPlugin)domain.CreateInstanceFromAndUnwrap(pathToDll, thirdPartyFullName);

几乎可以正常工作,只是它在最后一行出现错误并出现此异常

请求类型的许可 'System.Security.Permissions.FileIOPermission, mscorlib, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089' 失败了。

如果我将应用程序域上的 FileIOPermission 更改为具有完全访问权限,它运行正常。我在加载到应用程序域的程序集中是否需要更改某些内容,以说明它只需要对文件系统的读取访问权限?

我正在使用 .Net 4.0。

【问题讨论】:

    标签: c# .net applicationdomain


    【解决方案1】:

    我想你可能也需要

    FileIOPermissionAccess.PathDiscovery
    

    http://msdn.microsoft.com/en-us/library/y7h7t2a2.aspx

    【讨论】:

    • 谢谢 永远不会发现。
    猜你喜欢
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多