Createsubkey例外

时间:2016-01-02 21:52:51

标签: c# exception registry

我正在尝试创建一个子项但是我遇到了IO异常。子项保持为null,并且在尝试创建它的行上发生错误。以下是IO异常所说的内容:

嵌套级别超过510。 -要么- 发生系统错误,例如删除密钥或尝试在LocalMachine根目录中创建密钥。

RegistryKey sk1 = Registry.LocalMachine.OpenSubKey(KEY_NAME.ToUpper(), true);
// If the RegistrySubKey doesn't exist  (i.e. null)
if (sk1 == null)
{
    try
    {
         // this line causes the error
        sk1 = Registry.LocalMachine.CreateSubKey(KEY_NAME.ToUpper());
        // Save the the current date
        sk1.SetValue(KEY_NAME.ToUpper(), keyVal);
    }
    catch (Exception e)
    {
        //on error, return false
        return false;
    }
}

1 个答案:

答案 0 :(得分:2)

它可以是其中之一:

1.安全:

您无权写入LocalMachine注册表。您可以尝试将Registry.LocalMachine.CreateSubKey替换为Registry.CurrentUser.CreateSubKey

2。双开

有了这一行 -

  

RegistryKey sk1 = Registry.LocalMachine.OpenSubKey(KEY_NAME.ToUpper(),   真);

您正在使用“写入”权限打开SubKey。 您应该使用CreateSubKey。它会创建新的SubKey或打开现有的SubKey以进行更改。可能是在您使用'OpenSubKey'打开它并再次使用'CreateSubKey'导致此错误。 (无论哪种方式,您都不需要使用OpenSubKey)