J'ai demandé il y a longtemps comment restreindre l'accès aux plugins (je veux les empêcher d'écrire sur le disque ou le réseau) et on m'a dit d'utiliser AppDomain . J'ai cherché et essayé et a échoué sur la façon d'obtenir ce travail. P>
Quelqu'un peut-il fournir des informations pour que je puisse commencer, il suffit de mettre une appdomaine qui ne permet pas d'écrire au fichier ou au réseau. P>
3 Réponses :
Si vous utilisez des plugins, vous pourriez peut-être savoir sur les proxies. P>
Lors du chargement de votre assemblage via un proxy, vous pouvez spécifier le niveau de stratégie de sécurité pour cet ensemble particulier via la méthode Loadassembly () ou donc, si je me souviens bien. En d'autres termes, cela se fait par réflexion. P>
Je sais que ma réponse n'est pas si détaillée, mais j'espère que cela vous donnera une idée de la recherche de votre solution. Je vais prendre un œil sur le point de trouver des détails supplémentaires sur le sujet afin que je puisse être d'une meilleure aide. =) p>
J'espère que vous partagerez vos résultats lorsque vous l'avez fait. P>
Je suppose que c'est ce dont vous avez besoin, si je comprends bien votre point de vue correctement.
System.Security.PermissionSet ps = new System.Security.PermissionSet(System.Security.Permissions.PermissionState.None); ps.AddPermission(new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.NoAccess, "C:\\")); System.Security.Policy.PolicyLevel pl = System.Security.Policy.PolicyLevel.CreateAppDomainLevel(); pl.RootCodeGroup.PolicyStatement = new System.Security.Policy.PolicyStatement(ps); AppDomain.CurrentDomain.SetAppDomainPolicy(pl); System.Reflection.Assembly myPluginAssembly = AppDomain.CurrentDomain.Load("MyPluginAssembly");
Cela semble être exactionnellement ce que je suis après, je reçois le nom de montage donné ou la base de codes était invalide. (Exception de HRESULT: 0x80131047) Maintenant, mais je n'ai pas encore eu le temps de regarder davantage (im probablement faire quelque chose de mal). Il a plus de temps demain et il vous le faire savoir
Alors, enfin, était-ce ce que vous cherchiez? Je suppose que depuis que vous semblez avoir vérifié. :-)
@EKS Vous devez charger dans le même dossier ou l'un des enfants du dossier.