如何使用C#添加/更改OEMInformation注册表项?
我尝试使用此代码,但它返回错误:
RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\Windows\CurrentVersion\OEMInformation", true);
myKey.SetValue("manufacturer", "Asus", RegistryValueKind.String);
正在返回此错误:
mscorlib.dll中出现未处理的“System.Security.SecurityException”类型异常
其他信息:不允许请求的注册表访问。
编辑:
也试过这段代码:
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\Windows\CurrentVersion\OEMInformation");
key.SetValue("manufacturer", "Asus");
key.Close();
但此代码也返回错误:
mscorlib.dll中出现未处理的“System.UnauthorizedAccessException”类型异常
其他信息:无法写入注册表项。
我的应用程序已使用此代码以管理员身份运行:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
答案 0 :(得分:1)
Visual Studio也必须在管理员模式下运行。
答案 1 :(得分:0)
您必须以管理员身份运行程序才能访问(修改)LocalMachine密钥。 (例如,在程序中添加清单http://msdn.microsoft.com/en-us/library/bb756929.aspx)
或者获取对此特定注册表项(http://technet.microsoft.com/en-us/library/cc728310(v=ws.10).aspx)
中每个项的访问权限编辑: 确保您的程序以提升的权限运行。我创建了简单的Console程序,就像魅力一样。
您的修改补充: 如果仅使用一个参数打开注册表项,则表示您只想阅读(http://msdn.microsoft.com/en-us/library/z9f66s0a.aspx) 所以你必须像以前一样使用它(有两个参数,第二个设置为“true”)