在C#中更改OEM信息

时间:2013-09-11 13:33:45

标签: c# registry

如何使用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" />

2 个答案:

答案 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”)