9

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

这可能吗?

4

3 回答 3

5

既然您提到了磁盘访问,请考虑使用 .Net 的Code Access Security,它是为此目的而设计的。

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

在不复制文档的情况下,我只想说您的应用程序的代码可能会调用插件的代码,但会限制它执行特定的操作,例如启动新线程或访问磁盘。

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

于 2012-12-21T18:27:14.853 回答
2

我当然不确定如何实现这一切,但看起来可能需要接口 IPermission,我在 SO 上找到了另一个答案,这可能会有所帮助。

为自定义代码访问安全性实施 IPermission

于 2012-12-21T18:14:39.123 回答
1

我不确定我是否了解您希望获得旅行许可的方向。假设您希望“应用程序”告诉主应用程序它需要什么(几乎就像 android 应用程序如何向手机发出权限信号),您可以定义IAccessRights每个模块实现的接口并定义它想要或可以拥有的访问级别。

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

然后由模块为接口实现一个类,并在加载时检查对象并相应地协调权限。如果需要两种方式,请制定一个允许主应用程序设置(允许)模块权限的模式。

旁注:除此之外,我没有看到一种方法来禁止直接调用,例如File.Delete不深入了解系统本身(挂钩和其他)。

于 2012-12-21T18:05:55.800 回答