Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am getting error cannot write to the registry key when i am trying to save my keys in the registry .

//Here is my code .

Note : I tried to run as an Administartor assuming some permission problems still getting the same error ....

private const string RegistryKeyName = "Skms";
private readonly RegistryKey SoftwareKey = Registry.LocalMachine.OpenSubKey("SOFTWARE");

public KeyManagementRegistryKeyChangeImpl(bool writeable)
    {
        this.writable = writeable;
        RegistryKey skms; 
        if (Environment.Is64BitOperatingSystem == true) 
        {
            skms = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(RegistryKeyName,true);

        }
        else
        {
            skms = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
        }

        if (null == skms)
        {
            skms = SoftwareKey.CreateSubKey(RegistryKeyName, RegistryKeyPermissionCheck.ReadWriteSubTree);
        }

        if(skms == null)
        {
            throw new System.ArgumentException(string.Format(CultureInfo.InvariantCulture, 
                @"Registry Key 'HKEY_LOCAL_MACHINESOFTWARE{0}' not found or created",
                RegistryKeyName));
        }

        Decryptor decryptor = Decryptor.Create();
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
486 views
Welcome To Ask or Share your Answers For Others

1 Answer

Try this:

RegistryKey skms = SoftwareKey.OpenSubKey(RegistryKeyName, true);

The second parameter should be set to true if you need write access to the key.

-EDIT-

On 64-bit system, you can try this (if you are using .Net 4):

private readonly RegistryKey SoftwareKey = 
    RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).
    OpenSubKey("SOFTWARE");

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...