从服务更新HKEY_CURRENT_USER配置单元

时间:2011-11-18 12:00:52

标签: windows-7 registry winlogon

我正在编写一个网络提供商(Windows 7)来捕获域名和用户名,我必须将其保存在HKEY_CURRENT_USER \ Software \ MyApp \ Profile

由于网络提供商作为服务运行,因此数据存储在HKEY_USER \ .Default \ Software \ MyApp \ Profile

成功登录后如果我尝试从我的应用程序中读取它真正尝试从该用户的HKEY_CURRENT_USER读取数据,该数据没有任何内容。

这是如何管理的?如何将数据存储到服务的当前用户配置单元中。

2 个答案:

答案 0 :(得分:1)

您需要获取用户令牌(调用OpenProcess然后OpenProcessToken),使用该令牌模拟您的线程并使用RegOpenCurrentUser函数打开用户注册表配置单元。

您还可以找到用户SID并打开HKEY_USER\<SID>

答案 1 :(得分:0)

我设法完成了这件事。

我做了一个LogonUser,LoadUserProfile和ImpersonateLoggedOnuser。 LoadUserProfile将返回PROFILEINFO结构。 PROFILEINFO的成员hProfile是应该使用的实际HKCU根。

调用LogonUser将以递归方式触发网络提供程序,阻止您必须从NPLogonNotify参数检查lpStationName,如果其“SvcVtl”然后中断递归。有关NPLogonNotify的更多详细信息,请查找msdn文档。

完成所有注册表操作后,调用UnLoadUserProfile,RevertoToSelf,closeHandle(令牌)