首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在查找在沙盒AppDomain中加载程序集的最低权限。为什么需要这些权限?

正在查找在沙盒AppDomain中加载程序集的最低权限。为什么需要这些权限?
EN

Stack Overflow用户
提问于 2011-08-10 23:36:08
回答 1查看 1.4K关注 0票数 2

我正在尝试设置沙箱AppDomain的最低权限,以便加载程序集。似乎必须对appBase具有PathDiscovery权限,对加载的程序集具有Read权限,但对依赖程序集不需要任何权限。我的问题是:为什么我们需要PathDiscovery?对每个需要的程序集的读访问权限还不够吗?为什么只有加载的程序集需要读取权限,而不需要依赖程序集?

下面是给出一些上下文的代码片段:

代码语言:javascript
复制
AppDomainSetup setup = new AppDomainSetup
{
    ApplicationName = "Name",
    ApplicationBase = binFolder,
};

PermissionSet permissionSet = new PermissionSet(PermissionState.None);
permissionSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));

// Mandatory. Why PathDiscovery is needed?
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.PathDiscovery, binFolder));

// Mandatory. Why Read is not also needed for all dependent assemblies?
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read, assemblyPath));

var domain = AppDomain.CreateDomain("Domain Name", null, setup, permissionSet);

domain.CreateInstanceFromAndUnwrap(assemblyPath, typeName);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-11 00:30:03

我们为什么需要PathDiscovery?

因为成功地从指定路径加载程序集将显示该路径存在。同样,尝试从路径加载程序集时引发的某些异常也会表明该路径有效,即使目标文件不是.NET程序集也是如此。

为什么只需要加载的程序集才需要读权限,而不需要依赖的程序集?

由于加载的程序集不控制从中加载其依赖项的位置,因此仅能够加载依赖程序集并不会显示有关特定路径的有效性的信息。也就是说,它确实揭示了一些信息,因为.NET程序集搜索位置是众所周知的,所以我想可以说这里的检查应该更强一些。如果你对它有强烈的感觉,你可以在https://connect.microsoft.com/visualstudio/feedback上发布一个错误报告。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7013557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档