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