Executer une dll avec .NET sur un répertoire réseau

Vous avez une dll sur un répertoire partagé du réseau du type \\MON_SERVER\\mon_rep\madll.dll et vous souhaitez la laisser sur le répertoire partagé pour assurer ses mises à jour. Lorsque vous l’exécutez depuis un autre programme .NET, suprise, vous avez une erreur de ce type:

An unhandled exception of type 'System.IO.FileLoadException' occurred in Unknown Module.
Additional information:
Impossible de charger le fichier ou l'assembly 'madll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances.
Impossible d'accorder les demandes d'autorisation minimales. (Exception de HRESULT : 0x80131417)

Pourquoi? La raison est simple, le framework .NET n’assure pas sa confiance au réseau, même local, il refuse donc l’exécution.

Pour résoudre ce problème, plusieurs solutions:

La première consiste à signer votre dll avec l’utilitaire .NET strong name. Ensuite il faut autoriser cette dll (identifié par le strong name généré) et l’ajouter dans la zone de confiance. (L’interface décrite plus loin permet de le faire)

La deuxième solution, si vous ne voulez pas signer votre dll ou tout simplement que vous en avez plusieurs consiste à ajouter le répertoire réseau dans votre zone de confiance.C’est cette méthode que je vais décrire dans cet article.

Dans Panneau de Configuration > Outil d’administration
Ouvrir l’interface de Configuration de .Net, la dernière version de préférence.

Microsoft .NET Framework 2.0 Configuration

Sur la gauche, déployer l’arbre :
My Computer > Runtime Security Policy > Machine > Code Groups > All_Code
Clique-droit > Nouveau sur LocalIntranet_Zone
Sélectionne le nom que vous souhaitez

Sur l’écran suivant, sélectionner le type de condition « URL »
L’url suivante : \\MON_SERVER\\mon_rep\* permet d’autoriser toutes les dlls situées dans ce répertoire et les sous-répertoires.

Assurez-vous que Full Trust est bien sélectionné sur l’écran suivant.

Ensuite, cliquer sur suivant > Terminer.
Vous pouvez désormais appeler les dll de ce répertoire dans vos applications .NET.
Si vous avez d’autres problèmes de droits, depuis cette interface, vous pouvez gérer tous les droits de vos applications .NET. En naviguant, vous devriez trouvez votre bonheur.
De plus, les manipulations faites içi sont également possible en ligne de commande. Regarder pour cela du côté de la fonction « caspol »
Bon courage