Je suis currently developing an application dans lequel un utilisateur choisira dynamiquement dll et l'application exécutera certaines des méthodes de cette DLL. (si vous suivez le premier lien, vous verrez que je développe une sorte d'application de jeu Robocode en utilisant le .Net Framework). Par exemple, au début de la bataille, la méthode run
de la DLL est exécutée. Etant donné que tout ce qui a été spécifié dans la méthode d'exécution sera exécuté, il y a un certain nombre de contraintes de sécurité qui doivent être appliquées. Comme par exemple, si l'utilisateur qui a programmé la dll, au lieu d'utiliser uniquement les méthodes applicables à partir de l'interface (méthodes que le robot utilise pour marcher et tirer etc ...), appelle des méthodes qui récupèreront les fichiers et peut-être même supprimer des fichiers du disque dur ... et quand un autre utilisateur chargera cette DLL dans son ordinateur, ces méthodes seront invoquées sur son pc et ses fichiers seront modifiés par ce code malveillant.Chargement des assemblys à partir d'une application .Net dans un environnement Sandbox
Ainsi, je dois faire en quelque sorte cette exécution de l'application d'une sorte de sandbox Environnement afin que toutes les méthodes sont invoquées, il n'affectera pas le disque dur de l'ordinateur que le dll est ouvert sur.
Des idées sur comment je devrais commencer à faire cela?
Voici un exemple sur la façon dont je suis le chargement de ces dll et invoquant leurs méthodes:
for (int i = 0; i < robotList.Count; i++)
{
IRunnable o = robotList[i];
new Thread(delegate()
{
o.run();
}).Start();
}
Allez y jeter un coup d'œil; à votre santé –