Я в настоящее время разрабатываю приложение , в котором пользователь будет динамически выбирать библиотеки DLL, а приложение будет выполнять некоторые методы этой библиотеки DLL. ( если вы перейдете по первой ссылке, вы увидите, что я разрабатываю своего рода игровое приложение Robocode с использованием .Net Framework ).
Например, когда начинается битва, выполняется метод 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();
}