Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用OpenRemoteBaseKey需要什么权限?_C#_.net_Registry - Fatal编程技术网

C# 使用OpenRemoteBaseKey需要什么权限?

C# 使用OpenRemoteBaseKey需要什么权限?,c#,.net,registry,C#,.net,Registry,我曾在其他线程中询问过这一点,并获得了访问远程注册表的链接。但我现在面临的问题是,我无法在注册表中添加任何值。我试图使用以下代码向注册表中的现有项添加一些值,但在远程注册表中不执行任何操作: RegistryKey rk; rk = RegistryKey.OpenRemoteBaseKey( RegistryHive.CurrentUser, ReadServerName()); regkey = rk.OpenSubKey(LeafRegistry.LeafRoot + "\\sim\\Ne

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

RegistryKey rk;
rk = RegistryKey.OpenRemoteBaseKey(
RegistryHive.CurrentUser, ReadServerName());
regkey = rk.OpenSubKey(LeafRegistry.LeafRoot + "\\sim\\NewView\\");
regkey.SetValue("runsystem", SIMserver);
更新


RegistryHive.LocalMachine将在这里工作,我可以打开并执行所有操作,但为什么要使用RegistryHive.CurrentUser?我要说的是,在上面的代码中,我将获得'rk'的值,但我无法获得将变为null的regkey的值,我认为对于CurrentUser,OpenSubKey不起作用

更新


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

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

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


如果你没有管理员特权,那么我想你会失败的

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

我有管理员权限,我将我的用户ID添加到remote systemRegistryHive中的Administrators组。LocalMachine将在此处工作,我可以打开并执行所有操作,但是为什么RegistryHive.CurrentUser不工作?我想说的是,在上面给出的代码中,我将获得'rk'的值,但我无法获得将变为null的regkey的值,我认为对于currentsuer OpenSubKey不工作,我有管理员权限,我已将我的用户ID添加到远程系统中的Administrators组。这与此无关。不管MSDN如何描述OpenRemoteBaseKey,远程打开HKEY_当前用户是不可能的,请参阅上面RegConnectRegistry上的链接。您可以尝试打开HKEY_USERS/your user的SID,但仅当您的用户已登录到远程计算机时,此操作才有效。RegConnectRegistry不会为您加载用户的配置单元。您可能需要重新考虑您的方法。我所说的是在上面给出的代码中,我将获得'rk'的值,但我无法获得将变为null的regkey的值,我认为对于currentsuer OpenSubKey不起作用。同样,您的用户是否登录到远程计算机?使用regedit检查用户的配置单元是否加载到HKEY_用户中。否则,您可能会得到一个只读的默认用户密钥。无论如何,你为什么要这样做?也许你可以使用集团政策或其他什么?