2012-12-21 68 views
6

我正在C#中开发一个能够动态加载dll的应用程序。这些DLL代表我的“应用程序”。我想限制这些应用程序的权限。例如(我的主要问题之一)阻止访问光盘。因为我的应用程序正在使用我的主应用程序域的功能和实例,所以我不希望它们在单独的沙盒应用程序域中运行。在c#中限制程序集权限#

这是可能吗?

+0

什么版本的.NET你定位。 .net 4和之前的版本有所不同。 –

+0

主要针对.NET 4;) –

回答

3

既然你提到的磁盘访问,可以考虑使用NET的Code Access Security,这是专为这一目的。

定义表示访问各种系统资源权限的权限和权限集。

不用复制文档,我只是说你的应用程序的代码可能会调用插件的代码,但限制它不做特定的事情,如启动新线程或访问磁盘。

下面是一些你可以限制访问的资源:

+0

谢谢,这可能是一个重新搜索的好方法;) –

+2

好吧,我还没有找到任何有用的例子。你可能有一个给我吗? –

1

我不确定我了解您希望允许旅行的方向。假设你想要“应用程序”告诉主应用程序需要(几乎就像android应用程序向手机发送权限的方式),您可以定义每个模块实现的界面,并定义它想要的访问级别或可以有。

public interface IAccessRights 
{ 
    Bool CanReadFromDisk { get; } 
    Bool CanWriteToDisk { get; }; 
    Bool CanAccessNetwork { get; } 
} 

然后,它的向上实现一个类的接口和在该对象负荷时间检查并相应坐标权限模块。如果需要双向的话,找出一个允许主应用程序设置(允许)模块权限的模式。注意:除此之外,我没有看到直接调用File.Delete这样的方法,而没有深入系统本身(钩子和什么不)。