我在其他一些帖子中询问了这个问题,并获得了访问远程注册表的链接。但我现在面临的问题是我无法在注册表中添加任何值。我试图通过使用以下代码向注册表中的现有条目添加一些值,但不在远程注册表中执行任何操作:
RegistryKey rk;
rk = RegistryKey.OpenRemoteBaseKey(
RegistryHive.CurrentUser, ReadServerName());
regkey = rk.OpenSubKey(LeafRegistry.LeafRoot + "\\sim\\NewView\\");
regkey.SetValue("runsystem", SIMserver);
更新
RegistryHive.LocalMachine将在这里工作,我可以打开并执行所有操作,但那么为何为RegistryHive.CurrentUser?我所说的是在上面的代码中我将获得'rk'的值但是我无法获得regkey的值,它将变为null,我认为对于CurrentUser OpenSubKey不起作用。
更新
当我深入分析时,我看到除了这个特定的键,所有其他键都可以访问。我想知道这个特定的密钥是怎么回事,我在右键单击后也检查了权限,但看不到它?
答案 0 :(得分:0)
当您尝试通过网络更改远程计算机上的注册表值时,在大多数情况下几乎肯定会要求权限。此外,在很多情况下,即使您可以修改注册表值,也可以通过组策略刷新它们并还原。
可能是注册表的某些部分被限制编辑,
如果你没有管理员privelages,那么我认为你会失败。
答案 1 :(得分:0)
这不起作用。假设您的程序正在访问远程计算机的用户帐户未登录到远程计算机上。 Windows应该怎么做?实际上,RegConnectRegistry
的文档,OpenRemoteBaseKey
内部调用的文档,甚至不会将HKEY_CURRENT_USER
列为允许的参数。