【发布时间】:2009-02-04 04:31:33
【问题描述】:
我是currently developing an application,用户将在其中动态选择 dll,应用程序将执行该 dll 中的一些方法。 (如果你点击第一个链接,你会看到我正在使用 .Net Framework 开发一种Robocode 游戏应用程序)。
例如,战斗开始时,会执行dll中的run方法。
由于 run 方法中指定的任何内容都将被执行,因此必须应用相当多的安全约束。
例如,如果编写 dll 的用户不是仅使用接口中适用的方法(机器人用于行走和射击等的方法),而是调用将检索文件和甚至可能从硬盘中删除文件...当另一个用户将该 dll 加载到他的计算机时,这些方法将在他的电脑上调用,并且他的文件将被此恶意代码修改。
因此,我需要以某种方式使这个应用程序从一种沙盒环境运行,这样无论调用什么方法,它都不会影响打开 dll 的计算机的硬盘。
关于我应该如何开始这样做的任何想法?
这是一个关于我如何加载这些 dll 并调用它们的方法的示例:
for (int i = 0; i < robotList.Count; i++)
{
IRunnable o = robotList[i];
new Thread(delegate()
{
o.run();
}).Start();
}
【问题讨论】:
标签: .net assemblies sandbox