C++ 使用用户名/SID 或备用读取任何 Windows 用户 HKEY

Posted

技术标签:

【中文标题】C++ 使用用户名/SID 或备用读取任何 Windows 用户 HKEY【英文标题】:C++ read any windows user HKEY using username/SID or Alternate 【发布时间】:2018-06-13 07:40:05 【问题描述】:

我创建了一个适用于所有 Windows 用户(本地、AD、Azure 等)的应用程序。对于每个用户,我都在 HKEY_CurrentUer\TESTApp\ 注册表中存储了一些数据。现在在自定义凭据提供程序 (LOGINUI) 中,一旦用户输入凭据想要读取该用户 HKEY_...\TESTApp\ 详细信息以了解有关用户的更多信息。

如果他已经登录,我可以成功地将用户详细信息存储在 HKEY_CurrentUer\TESTApp\ 注册表中并从 HKEY_USERS\SID\TESTApp\ 读取详细信息。

现在我有以下问题,

    是否可以对未登录或使用任一用户名/SID 注销的用户执行相同操作? 是否有任何其他 HKEY 位置可以存储用户详细信息,并且可以在没有管理员权限的情况下使用用户名/SID 轻松读取?目前,我想在机器本身(无云)中维护用户详细信息。 最后,如果以上两个都不可能,我可以在我的应用工作区中创建和读取包含密钥对值的文件而不会出现任何权限问题吗?

由于我是 Windows 应用程序开发的新手,如果我做错了,请纠正我。提前致谢。

【问题讨论】:

【参考方案1】:

    HKEY_USERS\SID只有在本机成功登录后才会创建,注销后继续驻留。

    如果您谈论的是凭据提供程序CPUS_LOGON 的登录方案,则意味着您的凭据提供程序以最高权限工作 - 作为SYSTEM 用户,您几乎可以在任何地方进行读写。

【讨论】:

以上是关于C++ 使用用户名/SID 或备用读取任何 Windows 用户 HKEY的主要内容,如果未能解决你的问题,请参考以下文章

无法删除引用孤立 SID 的 ACL 条目

如何使用 C++ 复制 SID 以进行存储

c++ - Win32 窗口在第一次绘制后冻结(directx 11)

网络安全学习--用户和用户组

C++ 可能同时读取 int 和字符串

C++:从文件/用户名和密码读取