L’access au registre demandé n’est pas autorisé

J’écris un utilitaire de modification qui modifie certaines clés sous HKEY_CLASSES_ROOT .

Tout fonctionne bien sous Windows XP et ainsi de suite. Mais je reçois une erreur L’ Requested registry access is not allowed sous Windows 7. Vista et 2008, je suppose.

Comment dois-je modifier mon code pour append le support UAC?

app.manifest devrait être comme ceci:

            

Si vous n’avez pas besoin de privilèges d’administrateur pour l’ensemble de l’application, ou seulement pour quelques modifications peu fréquentes, vous pouvez effectuer les modifications dans un nouveau processus et le lancer en utilisant:

 Process.StartInfo.UseShellExecute = true; Process.StartInfo.Verb = "runas"; 

qui exécutera le processus en tant qu’administrateur pour faire tout ce dont vous avez besoin avec le registre, mais revenez à votre application avec les privilèges habituels. De cette manière, il n’invite pas l’utilisateur à ouvrir une boîte de dialog UAC à chaque lancement.

Vous ne pouvez pas écrire sur les hives HKCR (ou HKLM) dans Vista et les versions plus récentes de Windows, sauf si vous disposez de privilèges administratifs. Par conséquent, vous devez soit être connecté en tant qu’administrateur avant d’exécuter votre utilitaire, lui atsortingbuer un manifeste indiquant qu’il requirejs un niveau d’administrateur (qui invitera l’utilisateur à saisir les informations de connexion de l’administrateur), -Les administrateurs ne devraient pas jouer. 🙂

Comme solution temporaire, les utilisateurs peuvent cliquer avec le bouton droit sur l’utilitaire et sélectionner “Exécuter en tant qu’administrateur”.

J’essayais le verb = "runas" , mais j’obtenais toujours une verb = "runas" UnauthorizedAccessException lorsque j’essayais de mettre à jour la valeur du registre. Il s’est avéré que c’était dû à ne pas ouvrir la sous-clé avec la valeur inscriptible définie sur true.

 Registry.OpenSubKey("KeyName", true); 

Impossible d’écrire sur la clé de registre, obtenant une exception UnauthorizedAccessException

Ce problème concerne l’octroi de l’autorisation nécessaire au compte d’utilisateur sur lequel l’application s’exécute. Pour lire une situation similaire et une réponse détaillée pour la solution correcte, telle que documentée par Microsoft, n’hésitez pas à consulter ce post: http://rambletech.wordpress.com/2011/10/17/requested-registry-access-is- interdit/

Vous pourriez faire la même chose qu’abatishchev mais sans l’UAC