Carregando assemblies de um aplicativo .Net em um 'ambiente sandbox'
eu souatualmente desenvolvendo um aplicativo onde um usuário escolherá dinamicamente dlls e o aplicativo executará alguns dos métodos nessa dll. (se você seguir o primeiro link, verá que estou desenvolvendo uma espécie deRobocode aplicativo de jogo usando o .Net Framework)
Por exemplo, quando a batalha começa, orun
O método da DLL é executado.
Como o que foi especificado no método run será executado, existem algumas restrições de segurança que precisam ser aplicadas.
Por exemplo, se o usuário que programou a dll, em vez de usar apenas os métodos aplicáveis a partir da interface (métodos que o robô usa para andar e disparar etc ...), invoca métodos que recuperam arquivos e talvez até excluam arquivos do disco rígido ... e quando outro usuário carregar essa dll no computador, esses métodos serão invocados no PC e seus arquivos serão modificados por esse código malicioso.
Portanto, preciso de alguma forma fazer com que esse aplicativo seja executado a partir de uma espécie deAmbiente em área restrita para que quaisquer métodos sejam chamados, isso não afetará o disco rígido do computador em que a dll está aberta.
Alguma idéia de como devo começar fazendo isso?
Aqui está um exemplo de como eu estou carregando essas DLLs e invocando seus métodos:
for (int i = 0; i < robotList.Count; i++)
{
IRunnable o = robotList[i];
new Thread(delegate()
{
o.run();
}).Start();
}