Sécurité et partage réseau [Résolu]

Signaler
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
-
Salut à tous.

J'ai un petit soucis d'autorisation d'accès sur un fichier réseau.

J'ai un programme développé en VB2005 qui va être installé sur un serveur d'entreprise, dans un répertoire partagé. Ce soft récupère des paramètres de config dans un fichier INI situé dans le même dossier. lorsque j'execute ce soft depuis un poste client, je récupère une exception de type System.Security.Permissions.SecurityPermission dès que je tente de lire une clé dans le fichier ini sur l'api GetPrivateProfileString.

Comme je ne maitrise pas du tout ce domaine, je voulais savoir quel code je devais mettre pour obtenir les autorisations d'accès sur ce fichier.

Pour info, le dossier partagé sera accessible soit par l'adresse UNC, soit par un mappage de disque, c'est pas encore défini, mais j'ai essayer les 2 méthodes. Quant aux droits d'accès, je ne sais pas lequels seront définis sur le serveur, mais j'ai fait les essais avec le droit "Controle Total" pour le compte "Tout le monde" et ça passe pas.

Merci.

PS : Impossible d'envisager l'install en local sur chaque poste, le soft sera accessible depuis plus d'une centaine de poste sur plusieurs sites en France et sera certainement mis à jour régulièrement les premiers mois.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php

5 réponses

Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Comment as-tu installé le soft sur le PC ?
Pour que ton code managé accède à des ressources reseau, il faut :
1- Que tu ais accès à ces ressources au niveau domaine : Si tu accèdes aux fichiers via l'explorateur windows, c'ets OK
2- Mais il faut aussi que tu dises au framework que ton assembly (ton exe,quoi !) a le droit d'accèder a des machins super louche et hyper dangeureux qui sont sur ton LAN !
Niveau sécurité à la C..., on fait pas mieux !! j'ai entendu dire que M$ allait peut-être laissé tombé cela, ou du moins ouvrir les robinets par défaut, dans une prochaine version du framework.
bon enfin, bref pour en revenir à ton souci tu dois :
1- sur le poste, allez dans les outils d'admin
2- lancer l'outil de configuration du framework qui te va
3- vas dans "poste de travail | Stratégie de sécu du runtime" dans l'arbo de gauche
4- cliques sur le lien "Augmenter le niveau de confiance d'une assembly
5- tu dois ensuite choisir ton executable et lui donner un niveau de confiance correspondant a ce que tu veux qu'elle puisse faire (mets au maximum, te fait pas chier !)

Facile, hein ?!!

Sinon cela peut se faire via une ligne de commande : Un appel à Caspol devrait le faire :

{win}\Microsoft.NET\Framework\v2.0.50727\caspol.exe -q -machine -addgroup 1.2 -url "file:\\SERVEUR\Partage\Exename.exe" FullTrust -name "Project Name"

Tu peux même supprimer cela via caspol toujours (en cas de désinstal du soft, par exemple :

{win}\Microsoft.NET\Framework\v2.0.50727\caspol.exe -q -machine -remgroup "Project Name""

La, ce sont les lignes d'appel à caspol pour le framework 2.0, je pense que pour le 1.1, hormis le chemin d'accès à l'exe caspol à reviser, ca doit être ok
Perso, j'ai collé cela dans mes scripts InnoSetup, histoire de pouvoir installé du .NET avec IS sans souci.
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
ben en fait, au niveau du code, tu ne peux aps y faire grand chose puisse que c'est le framework lui-même qui bloc une assembly à ce niveau.
Pour ce qui est de déployer cela en masse, tu pourars facilement fair eun petit script (par exemple Inno setup) pour ton appli qui sera à balancer sur les clients : dedans, tu crées les icones qui vont bien, et tu exécutela ligne de commande de Caspol.exe que je t'ai donné, et ce, snas pour autant copier l'executable en local. Ton icone peut très bien pointer vers la ressource réseau.
A la limite, si tu ne veux pas faire de paquet d'install,tu peux simplement fair eun petit CMD.
Bref, tout cela est facilement automatisable, même pour des milliers de client.
Peros, au bureau, j'ai déployé une appli dans le même cas (exe sur un partage réseau et accès à des ressources réseau) via un script Inno Setup sur plus de 280 PC et cela fonctionne à merveille.
Si cela t'intéresses, j'ai un script IS de base, que je prends comme base de départ dans ce genre de cas. Celui-ci permet même l'install du framework .NET si besoin (ca grossit juste un peu le paquet, mais facilement supprimable)
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Ok Kristof, c'est une piste à suivre. j'essairais ça demain

Mais n'y a-t-il pas moyen de résoudre le problème au niveau du soft en jouant avec la classe System.Security (ou autre) ????

En fait mon logiciel pour le moment ne va lire que ce fichier ini au lancement. Plus tard, peut-etre qu'il viendra créer un fichier texte aussi, mais là, je ne sais pas encore dans quel dossier.
Comme je disais, il ne sera déployé que sur un serveur et utilisé depuis une centaine de poste dans toute la France, Donc si je pouvais éviter d'être obligé de passer (ou de faire passer quelqu'un) sur chacun des postes, mon client m'en sera reconnaissant. D'autant plus que le nombre de postes pourra varier avec le temps.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Effectivement, je suis intéressé par le script.

Mon appli n'auras pas d'icone, ni aucune interfaces utilisateur, elle sera directement lancé par le logiciel commercial, par la partie que j'y développe à l'interieur. Mais effectivement il me faudra bien indiqué quelque part sur les poste locaux le chemin d'accès de mon soft, probablement par une clé registre je pense. C'est un point auquel je n'ai pas encore réfléchi, mais si j'avais un script tout simple style "Double-click-rien-d'autre-à-faire" je pense que ça pourrais aller. (publication par mail à chaque utilisateur par exemple avec une note explicative)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Dans ce cas, je pense qu'un simple CMD devrait suffire