首页 > 解决方案 > C++ 使用用户名/SID 或备用读取任何 Windows 用户 HKEY

问题描述

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

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

现在我有以下问题,

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

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

标签: c++windowsvisual-c++registrycredential-providers

解决方案


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

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


推荐阅读