以编程方式编辑Local_Machine RegistryKeys(C#)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式编辑Local_Machine RegistryKeys(C#)相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个程序来更改远程计算机上的注册表项值,以阻止/允许用户个性化他们的锁屏图像。似乎我需要创建的关键是HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsPersonalization,其名称为NoChangingLockScreen。我可以使用.reg文件轻松完成此操作并将任何更改合并到他们的注册表中(我计划创建一个Windows服务来监视文件中的更改),虽然看起来我甚至无法修改HKEY_LOCAL_MACHINE类中的任何键。请注意:

  • 我是整个网络的域管理员,所有远程计算机都拥有管理员权限
  • 这个问题不仅发生在修改远程PC的密钥时,也发生在我自己的密钥上
  • 我已将RegistryKey对象创建为可写(参见下面的代码)
  • 看来我甚至无法使用OpenSubKey方法,因为读取local_machine路径只会抛出一个对象异常
  • 我已检查注册表中该特定类的权限,并确保我的帐户具有完全控制权
  • 我发现很少有关于权限问题的其他人的文档 RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWAREPoliciesMicrosoftWindows", true);
答案

Registry.ClassesRoot是为HKEY_CLASSES_ROOT。你需要像这样使用Registry.LocalMachine字段:

using (var registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWAREPoliciesMicrosoftWindows", writable: true))
{
    ...
}

另请注意,这适用于本地注册表访问。如果要打开远程注册表,则需要使用其他方法:

using (var remoteBaseKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "RemoteMachineName"))
using (var registryKey = remoteBaseKey.OpenSubKey(@"SOFTWAREPoliciesMicrosoftWindows", writable: true))
{
    ...
}

以上是关于以编程方式编辑Local_Machine RegistryKeys(C#)的主要内容,如果未能解决你的问题,请参考以下文章

Android添加边框以编程方式编辑文本

android以编程方式编辑联系人

以编程方式编辑 grub 选项

可以以编程方式编辑 Info.plist 吗?

Android:编辑以编程方式添加的视图

以编程方式打开 UITableView 编辑操作按钮