远程注册表在不同用户时始终为null

时间:2012-06-18 15:34:53

标签: 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");

当我从USER1运行应用程序时,它的工作原理是因为我的远程计算机始终使用USER1登录。

现在如果我用USER2运行它,我的regKey总是等于NULL,无论如何。

在我的远程计算机上,在组件服务中,我允许该服务:REMOTE REGISTRY。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

例如,它会是:

  • 如果您已登录,则会看到注册表项? (但你不是!)
  • 当前登录用户的注册表项(如果没有,该怎么办?如果不止一个怎么办?)

它不能只是获取您的注册表配置单元并加载它,因为您可能没有漫游配置文件。它不想创建一个,所以你可以看看注册表。

所以:HKEY_CURRENT_USER不会返回任何远程注册表服务。如果您对特定用户感兴趣,可以查看HKEY_USERS。