baxtrf
Messages postés4Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention28 avril 2006
-
27 avril 2006 à 11:08
RV2931
Messages postés185Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention16 juillet 2016
-
15 avril 2008 à 11:47
Bonjour à tous !
Je me trouve face à un problème que je n'arrive pas à résoudre :
J'ai développé un programme qui est amené à être exécuté au sein de mon entreprise depuis un dossier partagé. Chaque utilisateur accède à ce dossier (en tant que lecteur réseau) en lecture.
Lorsque j'exécute mon programme depuis le réseau, , j'ai l'exception suivante avant même l'exécution de mon code :
An unhandled exception of type 'System.Security.Policy.PolicyException' occurred in Unknown Module.
Additional information: Required permissions cannot be acquired.
Je précise qu'en local mon programme marche très bien.
Je pense qu'il y a quelque chose à faire au niveau de l'assembly mais je ne vois pas trop quoi ni comment.
Au mieux, j'aimerais faire en sorte que le programme s'exécute correctement.
Au pire j'aimerais pouvoir au moins récuperer cette exception (qui je le répete survient aavant toute execution de mon code).
Est ce que quelqu'un a une solution à mon problème ?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 27 avril 2006 à 19:06
Dans Visual Studio (2005) -> Preferences de ton projet -> Onglet signature.
Tu coches la checkbox "Signer l'assembly", et tu te crées un nouveau jeu de clé. Un fichier snk est généré, tu le gardes bien precieusement, il te permettra de signer d'autres assemblys.
Cette manip donne un nom fort (strong name) a ton assembly. (info : Il faut aussi que ton assembly ait un numéro de version pour avoir un nom fort).
Ensuite, pour donner aux assemblys signés avec ta clé le droit d'execution Fulltrust, il suffit d'aller dans le panneau de configuration du .net framework -> Stratégie de sécurité du runtime -> Ordinateur -> groupes de codes.
Tu crées un nouveau code (clic droit -> nouveau).
Tu lui donnes un nom, une description, tu fais suivant, et dans le nouvel ecran, tu deroules la liste deroulante et tu choisis "Nom fort". Tu cliques sur "importer" et tu choisis ton assembly. Il importera automatiquement la clé publique. Tu fais suivant, et a cet ecran, dans la liste deroulante, tu choisis "Full Trust".
Normalement, ca devrait marcher.
Si tu veux mettre en full trust tous les assemblys de ton intranet local, dans "Groupes de codes" tu choisis "LocalIntranet_Zone" et tu le passes en Full Trust
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 27 avril 2006 à 11:50
Je pense qu'il faut revoir les permissions NTFS notamment au niveau de la sécurité Ntfs et non des droits de partage : voir si "lecture et execution" est authorisé pour les personnes qui accedent au dossier
baxtrf
Messages postés4Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention28 avril 2006 27 avril 2006 à 12:19
Tout d'abord merci pour ta réponse !
Malheureusement le problème n'est pas si simple que ça :(
En effet les utilisateurs et moi avont les droits "lecture et execution" sur ces repertoires. D'ailleurs, un programme non-managé s'execute sans aucun probleme.
D'apres ce que j'ai pu comprendre, il faudrait enregistrer mon application dans le GAC des machines des utilisateurs pour que ca fonctionne. Cette solution est _beaucoup_ trop lourde pour moi. A confirmer!
Une autre solution consisterait à executer le programme en local (donc après copie). Mais c'est franchement pas propre ...
gyzmo222
Messages postés66Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention 2 juin 20061 27 avril 2006 à 18:10
Je pencherais aussi pour des permissions non attribuées à l'utilisateur distant mais si tu pense pouvoir appeler ton programme à distance, pense aux services web. Un service sur la machine distante permettra d'executer ton prog en local en envoyant les infos sur l'autre pc...
Vous n’avez pas trouvé la réponse que vous recherchez ?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 27 avril 2006 à 18:16
Salut,
Et en mettant les droits de tes assemblys lancés depuis ton intranet local en fulltrust ca donne quoi ?
Il y a eu un sujet sur ca hier qui se trouve quelques lignes en dessous, dans le forum
Sinon, quels sont les actions de ton assembly qui pourraient le faire agir comme ca ? (acces a une bdd, acces a des fichiers/dossiers, ...) ?
Mx
MVP C#
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 27 avril 2006 à 18:22
Ou encore, tu signes ton assembly et tu donnes les droits en fulltrust a tous les assemblys qui ont cette signature.
C'est plus sécurisé ainsi que de mettre le local intranet en fulltrust.
RV2931
Messages postés185Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention16 juillet 2016 15 avril 2008 à 11:47
Bonjour,
j'ai le même genre de problème sous VS2003, execution locale nickelle, en réseau, system.Exception.Permissions.patati.patata, j'ai essayé en mettant "uiliser mscorlib : false" ou plutôt "Ne pas utiliser mscorlib:True", la logique windows par excellence :o)
J'ai une erreur bidon du genre System.Byte n'est pas défini ou importé, alors que j'en utilise pas, mais bon, comme j'ai l'impression que mscorlib, c'est un peu ça qui fait tout... je pense pas qu'on puisse faire sans, d'où la question, est-ce bien utile de demander de ne pas utiliser quelque chose que l'on ne peut pas ne pas utiliser ??? (Ahhh bill, quel phylosophe...) :o)
Si quelqu'un pouvait me donner la marche à suivre pour résoudre ce problème sous VS2003, j'ai pas trouvé
Merci
RV
PS: Je viens de me mettre au C#, et je trouvais que c'était une merveille, ce qui en lui-même est vrai, mais alors le système de code managé patin couffin, si ça crée ce genre de problème et de procédure de résolution lorsque tu veux déployer un simple tout petit ".exe" en partage réseau, c'est vraiment mal pensé... mon avis d'amateur biensûr, déjà il y a le problème de la version de .NET...
L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"