繁体   English   中英

以编程方式编辑Local_Machine注册表项(C#)

[英]Editing Local_Machine RegistryKeys Programmatically (C#)

我正在尝试制作一个程序,以更改远程计算机上的注册表项值,以阻止/允许用户个性化其锁定屏幕图像。 似乎我需要创建的密钥位于HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Personalization ,其名称为NoChangingLockScreen 我可以轻松地使用.reg文件执行此操作,并将所有更改合并到其注册表中(我计划创建Windows服务来监视文件中的更改),尽管似乎我什至无法修改HKEY_LOCAL_MACHINE类中的任何键。 请注意:

  • 我是我们网络上的域管理员,所有远程计算机都具有管理员权限
  • 修改远程PC的密钥时不仅会发生此问题,而且我自己也会发生此问题
  • 我已将RegistryKey对象创建为可写的(请参见下面的代码)
  • 看来我什至不能使用OpenSubKey方法,因为读取local_machine路径只会引发对象异常
  • 我已经检查了注册表中该特定类的权限,并确保我的帐户拥有完全控制权
  • 我发现很少有其他人遇到权限问题的文档

     RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Policies\\Microsoft\\Windows", true); 

Registry.ClassesRoot用于HKEY_CLASSES_ROOT 您需要像这样使用Registry.LocalMachine字段:

using (var registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Policies\Microsoft\Windows", writable: true))
{
    ...
}

另请注意,这是用于本地注册表访问。 如果您想打开远程注册表,则需要使用另一种方法:

using (var remoteBaseKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "RemoteMachineName"))
using (var registryKey = remoteBaseKey.OpenSubKey(@"SOFTWARE\Policies\Microsoft\Windows", writable: true))
{
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM