C# 修改注册表出问题

RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
RegistryKey micro = software.OpenSubKey("Microsoft",true);
RegistryKey NT = micro.OpenSubKey("Windows NT",true);
RegistryKey CV = NT.OpenSubKey("CurrentVersion",true);
RegistryKey logon = CV.OpenSubKey("Windows");
logon.SetValue("LogonType", "1", RegistryValueKind.DWord);
想要把注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的LogonType值改为1。但是执行的时候logon.SetValue("LogonType", "1", RegistryValueKind.DWord);这句过不去,报错。是什么原因?是无权修改吗?怎样解决?
最新回答
雨不眠的下

2024-10-12 09:55:52

看你的描述,发现2个问题:
1,你说是Winlogon下的LogonType值改为1,但是你打开的注册表是Windows。
2,OpenSubKey的第二个参数true一般不指定,容易引发权限异常。
而且不需要这么复杂的一步步打开,这样就可以。
RegistryKey hklm = Registry.LocalMachine;
RegistryKey logon = hklm.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows");
logon.SetValue("LogonType", "1", RegistryValueKind.DWord);