Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# 如果我认识HKEY#U的用户';希德是谁?_C#_.net_Windows_Registry_Registry Virtualization - Fatal编程技术网

C# 如果我认识HKEY#U的用户';希德是谁?

C# 如果我认识HKEY#U的用户';希德是谁?,c#,.net,windows,registry,registry-virtualization,C#,.net,Windows,Registry,Registry Virtualization,我正在尝试访问注册表值(由另一个程序编写),当从登录用户的上下文访问时,该注册表值应可通过HKEY_CURRENT_用户注册表基键随时访问。不幸的是,我正在通过服务访问此信息,因此根据我收集的信息,我有两个选择: 模拟登录用户访问注册表的每段代码,并通过HKEY_CURRENT_user/SOFTWARE/Company/Product使用HKEY_CURRENT_用户基键访问注册表 获取登录用户的SID,并通过HKEY_USERS/{SID}/SOFTWARE/Company/Product

我正在尝试访问注册表值(由另一个程序编写),当从登录用户的上下文访问时,该注册表值应可通过HKEY_CURRENT_用户注册表基键随时访问。不幸的是,我正在通过服务访问此信息,因此根据我收集的信息,我有两个选择:

  • 模拟登录用户访问注册表的每段代码,并通过HKEY_CURRENT_user/SOFTWARE/Company/Product使用HKEY_CURRENT_用户基键访问注册表
  • 获取登录用户的SID,并通过HKEY_USERS/{SID}/SOFTWARE/Company/Product使用HKEY_USERS基键访问注册表
我非常希望使用第二种解决方案,因为对于我正在使用的大型代码库来说,它要简单得多。我最近才了解到注册表虚拟化及其可能导致的问题,因此我想验证我的上述解决方案是否有效,并询问是否有其他解决方案可用于解决我的问题。


感谢您提供的关于这个主题的任何知识,或者您可以为我指出我可能找不到的文章。

使用我的第二个解决方案,对于多个场景中的多个操作系统版本来说似乎很好。经过更多的研究和其他人的投入,我不确定是否还有其他可行的解决方案


获取登录用户的SID,并通过HKEY_USERS/{SID}/SOFTWARE/Company/Product使用HKEY_USERS基键访问注册表…

从服务中执行每个用户的操作几乎总是要付出代价。在这种情况下,HKCU注册表项发生了什么情况?感谢您的回复,我遇到了一些问题,我试图监视其注册表值的程序由于注册表虚拟化而将其注册表值放在我不监视的位置。我的第二个解决方案对我的情况有效吗?或者我正在监视的程序是否会因为RV而在另一个位置的注册表项中存储/更改它们的值?我正在尝试对此进行备份:首先为什么要监视注册表值?我正在检测我正在监视的程序的安装,并试图利用它们写入程序注册表项的某个值,他们将其存储在HKEY_CURRENT_用户基密钥中。从我所看到的HKEY_用户使用SID的情况来看,这也应该是可用的。它往往会隐藏一个bug,忘记调用LoadUserProfile()。隐藏bug不是一个好主意。在什么情况下我的解决方案会失败?你是说漫游配置文件的情况吗?