如何使用 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();
您需要打开新创建的密钥以进行读/写访问:
key = Registry.LocalMachine.CreateSubKey(
@"Software'Microsoft'Windows'CurrentVersion'Policies'System",
RegistryKeyPermissionCheck.ReadWriteSubTree, // read-write access
rs);
您不需要
rs
部分,除非您尝试为正在创建的密钥分配特定权限。
您需要:
- 打开要在其中创建子项的键,并将其分配给
RegistryKey
变量。 添加一个布尔true
以将其标记为可写。 - 使用该变量创建子项,并将其分配回同一变量。
- 使用
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);