Accès refusé lors de la création de la clé de registre en C#
Je suis en train de créer une clé de registre à l'emplacement suivant, mais je suis d'erreur accès refusé:
HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\MyProgram
Voici le code:
RegistryKey reg;
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany\MyProgram");
- Probablement l'utilisateur qui est de l'exécution de votre code n'a pas les autorisations pour créer la clé. Si vous démarrez manuellement
regedit
avec le même utilisateur, vous pouvez créer la sous-clé dans l'Éditeur de Registre? - Je suis connecté en tant qu'administrateur. Mais quand je lance regedit, puis je reçois ce message de Windows "voulez-vous autoriser le programme à apporter des modifications à l'ordinateur?" et lorsque je clique sur Oui, alors seulement je peux accéder à la base de registre. Et oui, je peux créer la clé et la sous-clé par le biais de l'éditeur du registre.
Vous devez vous connecter pour publier un commentaire.
Vous êtes le plus susceptible à l'aide de Contrôle de Compte d'utilisateur (UAC). Cela signifie que même si vous êtes administrateur de votre jeton d'accès n'a pas les privilèges nécessaires pour faire des choses comme la création des clés de registre dans
HKEY_LOCAL_MACHINE
.Toutefois, en passant par une invite UAC vous pouvez élever vos privilèges.
Regedit comprend un Contrôle de compte d'utilisateur manifeste sensibiliser l'invite avant qu'il soit exécuté en s'assurant qu'il peut effectuer les actions qu'il doit être en mesure de le faire. Vous pouvez également faire un clic droit sur un fichier exécutable ou le raccourci et sélectionnez Exécuter en tant qu'administrateur.
Donc, essentiellement, vous avez trois options:
La première solution est moins sûr et la dernière solution est la plus élégante (mais aussi celle qui exige un effort).
Vous avez besoin pour exécuter votre application sous un compte disposant de droits suffisants pour écrire dans le registre à l'emplacement spécifié. Habituellement, le
HKEY_LOCAL_MACHINE
branche est réservé pour les utilisateurs de puissance, car il contient de la machine, les paramètres globaux.J'ai essayé la syntaxe suivante:
Je ne suis pas sûr pourquoi, mais dans Windows 7, si vous spécifiez le nom de la machine sur laquelle vous ajoutez la variable système, même pour ordinateur local, puis il travaille.