1

我曾在其他一些线程中询问过这个问题,并获得了访问远程注册表的链接。但我现在面临的问题是我无法在注册表中添加任何值。我试图通过使用以下代码向注册表中的现有条目添加一些值,但未在远程注册表中执行任何操作:

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 不起作用。

更新

当我深入分析时,我发现除了这个特定的键之外,所有其他键都可以访问。我想知道这个特定键发生了什么,我在右键单击后也检查了权限,但看不到它?

4

2 回答 2

0

在大多数情况下,当您尝试通过网络更改远程计算机上的注册表值时,您几乎可以肯定需要权限。此外,在很多情况下,即使您可以修改注册表值,它们也可以通过组策略刷新并恢复。

可能是注册表的某些部分被限制编辑,

如果您没有管理员特权,那么我认为您会陷入困境。

于 2012-12-03T12:14:46.933 回答
0

这是行不通的。假设您的程序正在访问远程计算机的用户帐户未在远程计算机上登录。Windows应该怎么做?实际上,内部调用的文档RegConnectRegistry甚至OpenRemoteBaseKey没有HKEY_CURRENT_USER列为允许的参数。

于 2012-12-03T12:18:17.533 回答