web-dev-qa-db-fra.com

C # Créer des valeurs dans la machine locale du registre

Le code suivant ne fonctionne pas pour moi:

public bool createRegistry()
{
    if (!registryExists())
    {
        Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\xelo\\");

        Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\xelo").SetValue("hostname", (string)hostname, Microsoft.Win32.RegistryValueKind.String);


        return true;
    }
    else
    {
        return updateRegistry();
    }
}

Exception:

System.UnauthorizedAccessException | "Impossible d'écrire sur la clé de registre"

24
Angel.King.47

Les utilisateurs non administrateurs et non administrateurs n'ont pas le droit de modifier la clé HKEY_LOCAL_MACHINE. Exécutez le programme "en tant qu'administrateur".

27
Kyle Alons

Même lorsque je suis administrateur, je ne pense pas que vous puissiez créer de nouvelles clés sur LocalMachine. Assurez-vous que vous le faites

Registry.LocalMachine.CreateSubKey(@"SOFTWARE\YourCompanyName\SomeNewKey");

et pas

Registry.LocalMachine.CreateSubKey("SomeNewKey");
10
nothingisnecessary

Ci-dessous le code pour créer la clé dans le registre.

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\Wow6432Node\\Names");
key.SetValue("Name", "Isabella");
key.Close();
10
Dinesh Haraveer

Eh bien, vous avez déjà votre réponse - je suppose que vous exécutez sur Vista ou Windows 7 (ou Server 2008) et le processus/l'utilisateur exécutant l'application n'a pas les droits/l'autorisation de modifier le registre.

Ce n'est donc pas un problème de code en tant que tel, mais un problème d'administration système. Générez l'application et exécutez-la en tant qu'administrateur et voyez si cela fonctionne.

0
Murph