0

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

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

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

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

4

2 回答 2

1

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

您也可以找出用户 SID 并打开HKEY_USER\<SID>.

于 2011-11-18T12:18:44.153 回答
0

我设法完成了这件事。

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

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

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

于 2012-02-07T13:44:42.500 回答