Petite astuce du jour...
Ce matin j'ai eu besoin d'enregistrer ma Dll signée dansle GAC de notre serveur de build qui est sous Windows 2008.
Manipulation super simple en principe puisque qu'un simple drag and drop de la Dll dans le répertoire %WINDIR%\Assembly\ et hop ! Ou alors, on peut aussi utiliser (et c'est recommandé) l'utilitaire gacutil.
Mais avec Windows 2008 (il semble qu'on observe la même chose sous Vista) le drag and drop tout comme le gacutil vous renvoi un message d'erreur Failure adding assembly to the cache: Access denied. Très désagréable et surprenant au premier abord lorsqu'on a les droits d'administrateur.
L'astuce est donc de démarrer la ligne de commande MS-DOS en faisant "clique droit -> run as Administrator" pour utiliser gacutil. Et la c'est tout bon, la dll est enregistrée dans le GAC.
Je n'ai pas le temps aujourd'hui de fouiller plus que ça les principes qui régissent ce fonctionnement mais si quelqu'un a une explication ou un lien pour aider à la compréhension, n'hésitez pas à laisser un commentaire.
Edit le 24/10/2008 à 15:00 :
En posant la question à des collègues de l'exploitation j'ai eu une réponse. En fait c'est lié au "nouveau " fonctionnement de la sécurité dans Windows Vista et 2008. Tout utilisateur ayant les droits d'administration, peut accéder aux fonctionnalités des administrateurs mais doivent explicitement indiquer qu'ils souhaitent réaliser une action en tant qu'administrateur en utlilisant le menu "clique droit -> Run as Administrator".
C'est plus clair comme ça, non ?