我正在尝试创建一个子项但是我遇到了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;
}
}
答案 0 :(得分:2)
它可以是其中之一:
您无权写入LocalMachine注册表。您可以尝试将Registry.LocalMachine.CreateSubKey替换为Registry.CurrentUser.CreateSubKey
有了这一行 -
RegistryKey sk1 = Registry.LocalMachine.OpenSubKey(KEY_NAME.ToUpper(), 真);
您正在使用“写入”权限打开SubKey。 您应该使用CreateSubKey。它会创建新的SubKey或打开现有的SubKey以进行更改。可能是在您使用'OpenSubKey'打开它并再次使用'CreateSubKey'导致此错误。 (无论哪种方式,您都不需要使用OpenSubKey)