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();
}

questionAnswers(2)

yourAnswerToTheQuestion