如何使用 RegistryKey.SetValue

本文关键字:SetValue RegistryKey 何使用 | 更新日期: 2023-09-27 17:56:00

我正在尝试使用以下代码创建新的注册表项并收到此错误:

Cannot write to the registry key.

我哪里错了???

var rs = new RegistrySecurity();
string user = Environment.UserDomainName + "''" + Environment.UserName;
rs.AddAccessRule(new RegistryAccessRule(user,
                                        RegistryRights.WriteKey | RegistryRights.SetValue,
                                        InheritanceFlags.None,
                                        PropagationFlags.None,
                                        AccessControlType.Allow));
RegistryKey key;
key = Registry.LocalMachine.CreateSubKey(@"Software'Microsoft'Windows'CurrentVersion'Policies'System", RegistryKeyPermissionCheck.ReadSubTree, rs);
key.SetValue("kashif", 1, RegistryValueKind.DWord);
key.Close();

如何使用 RegistryKey.SetValue

您需要打开新创建的密钥以进行读/写访问:

key = Registry.LocalMachine.CreateSubKey(
    @"Software'Microsoft'Windows'CurrentVersion'Policies'System",
    RegistryKeyPermissionCheck.ReadWriteSubTree, // read-write access
    rs);
您不需要

rs部分,除非您尝试为正在创建的密钥分配特定权限。

您需要:

  1. 打开要在其中创建子项的键,并将其分配给RegistryKey变量。 添加一个布尔true以将其标记为可写。
  2. 使用该变量创建子项,并将其分配回同一变量。
  3. 使用 RegistryKey 变量设置值。

例:

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software'Microsoft'Windows'CurrentVersion'Policies'System", true);
key = key.CreateSubKey("MyNewKey");
key.SetValue("kashif", 1, RegistryValueKind.DWord);

如果您只想编辑现有密钥(如System),则不使用 CreateSubKey ,因为密钥已存在。 这仅用于创建新密钥。 您使用OpenSubKey .

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software'Microsoft'Windows'CurrentVersion'Policies'System", true);
key.SetValue("kashif", 1, RegistryValueKind.DWord);