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);这句过不去,报错。是什么原因?是无权修改吗?怎样解决?
看你的描述,发现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);