C# 当用户不同时,远程注册表始终为空

C# 当用户不同时,远程注册表始终为空,c#,.net,windows,winforms,remote-registry,C#,.net,Windows,Winforms,Remote Registry,我正在创建一个c#windows窗体应用程序,用于在远程计算机上读取注册表 RegistryKey regKey = RegistryKey .OpenRemoteBaseKey(RegistryHive.CurrentUser, pc, RegistryView.Registry64) .OpenSubKey("SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources"

我正在创建一个c#windows窗体应用程序,用于在远程计算机上读取注册表

RegistryKey regKey = RegistryKey
                        .OpenRemoteBaseKey(RegistryHive.CurrentUser, pc, RegistryView.Registry64)
                        .OpenSubKey("SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources");
当我从USER1运行应用程序时,它会工作,因为我的远程计算机总是使用USER1登录

现在,如果我用USER2运行它,我的regKey总是等于NULL,不管怎样

在我的远程计算机上,在组件服务中,我允许服务:远程注册表


有什么想法吗?

您无法通过远程注册表读取HKEY_CURRENT_USER,原因很简单,从远程注册表服务的角度来看,没有“CURRENT USER”

例如,它会是:

  • 如果您已登录,您将看到的注册表项?(但你不是!)
  • 当前登录用户的注册表项(如果没有,怎么办?如果有多个怎么办?)
它不能仅仅获取您的注册表配置单元并加载它,因为您可能没有漫游配置文件。它不想仅仅为了查看注册表而创建一个


所以:HKEY_当前用户不会为远程注册表服务返回任何内容。如果您对某个特定用户感兴趣,可以在HKEY_USERS下查看。

User1和User2的权限有什么区别?User2是否登录过计算机?如果没有,则在搜索CurrentUser时,它将没有任何注册表项可供检查。@abatishchev我无法访问域以查看两者之间的区别users@GazWinter我有4台远程计算机,用户2只登录其中1台,我至少应该看到一台远程注册表,但是没有我的注册表项仍然为空。请尝试此操作以检查权限差异b/w User1和User2-
Accesschk“domain\user”-a*
。从这里下载-