【问题标题】:Changing OEM Info in C#在 C# 中更改 OEM 信息
【发布时间】:2023-04-01 11:28:02
【问题描述】:

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

【问题讨论】:

标签: c# registry


【解决方案1】:

Visual Studio 也必须在管理员模式下运行。

【讨论】:

    【解决方案2】:

    您必须以管理员身份运行程序才能访问(修改)LocalMachine 密钥。 (例如,将清单添加到您的程序中 http://msdn.microsoft.com/en-us/library/bb756929.aspx

    或访问此特定注册表项 (http://technet.microsoft.com/en-us/library/cc728310(v=ws.10).aspx) 中的每个项

    编辑: 确保您的程序以提升的权限运行。我创建了简单的控制台程序,并像魅力一样工作。

    您的编辑补充: 如果您只使用一个参数打开注册表项,则意味着您只想读取 (http://msdn.microsoft.com/en-us/library/z9f66s0a.aspx) 所以你必须像以前一样使用它(带有两个参数并将第二个设置为“true”)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2010-10-30
      • 1970-01-01
      • 2017-05-14
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多