Exécution d’assemblys .NET « partiellement fiables » à partir d’un partage réseau

StackOverflow https://stackoverflow.com/questions/24468

  •  09-06-2019
  •  | 
  •  

Question

Lorsque j'essaie d'exécuter un assembly .NET (boo.exe) à partir d'un partage réseau (mappé sur un lecteur), il échoue car il n'est que partiellement fiable :

Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers.
   at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
   at BooCommandLine..ctor()
   at Program..ctor()
   at ProgramModule.Main(String[] argv)
The action that failed was:
LinkDemand
The assembly or AppDomain that failed was:
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67
The Zone of the assembly that failed was:
Intranet
The Url of the assembly that failed was:
file:///H:/boo-svn/bin/boo.exe

Avec les instructions de un article de blog, j'ai ajouté une politique à la configuration .NET faisant entièrement confiance à tous les assemblys avec file:///H:/* comme URL.J'ai vérifié cela en entrant l'URL file:///H:/boo-svn/bin/boo.exe dans le Évaluer l'assemblage outil dans la configuration .NET et notant que boo.exe avait le Libre autorisation (qu'il n'avait pas avant la politique).

Même avec la permission, boo.exe ne fonctionne pas.Je reçois toujours le même message d'erreur.

Que puis-je faire pour déboguer ce problème ?Existe-t-il un autre moyen d'exécuter des assemblys « partiellement fiables » à partir de partages réseau sans avoir à modifier quelque chose pour chaque assembly que je souhaite exécuter ?

Était-ce utile?

La solution

Avec .NET 3.5 SP1, les assemblys .NET exécutés à partir de partages UNC disposent d’autorisations complètes.

Voir celui de Brad Abrams Autoriser l'exécution des fichiers .exe à partir d'un partage réseau pour des solutions de contournement et des discussions, et enfin le suivi .NET 3.5 SP1 permet de lancer du code managé à partir d'un partage réseau.

Autres conseils

J'ai résolu le problème en utilisant caspol comme indiqué dans le billet de blog de Johnny Hughes Exécuter une application .Net à partir d'un partage réseau:

caspol -addgroup 1.2 -url file:///H:/* FullTrust

Il semble que l'interface graphique de configuration .NET permettant de gérer les politiques ne fonctionne tout simplement pas.

Jetez un œil au programme 'caspol.exe' (fourni avec les runtimes .NET).Vous devrez le faire sur la machine à partir de laquelle vous essayez d’exécuter l’application.Je n'ai pas pu le « marquer » et l'assembler (probablement juste moi).Cependant, en utilisant Caspol et en configurant l'autorisation appropriée pour mon application, LocalIntranet_Zone, résolvez mon problème similaire.

J'ai entendu (mais je ne l'ai pas encore essayé) que .NET 3.5 sp1 avait supprimé cette exigence de sécurité renforcée (ne permettant pas aux assemblys .NET de résider sur un partage par défaut).

Je pense que tu veux ajouter le AllowPartiallyTrustedCallers attribuer à votre assemblée.Le message d'erreur implique que quelque chose qui appelle votre assembly boo.exe n'est pas entièrement fiable et que boo.exe ne dispose pas de cet attribut le permettant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top