如何获取Windows在“登录”屏幕上显示的用户帐户列表?

时间:2012-05-08 14:18:41

标签: c++ windows

我正在使用NetQueryDisplayInformation(我已经尝试过NetUserEnum函数)来获取本地计算机上的用户帐户集。我可以通过这种方式获得所有帐户 - 但我只想要与实际人类相关联的帐户,而不是例如用于软件更新的隐藏帐户。

在相关结构和the MSDN documentation上阅读similar Stack questions之后,我发现没有什么可以让我过滤到我需要的帐户。

理想情况下,某人会有一个简单可靠的解决方案:

  1. 不涉及使用未记录的注册表项
  2. 不依赖于枚举磁盘上的用户文件夹
  3. 我不会尝试构建一份详尽的非真实用户帐户列表
  4. 由于技术原因,WMI不是一个选项
  5. 有什么想法吗?

    [很久以后] 得到答案,但不是这里 - 只需枚举每个用户的组。 “真人”帐户将是管理员,高级用户,用户,访客中的一个或多个的成员。

2 个答案:

答案 0 :(得分:0)

您可以使用NetUserEnum功能。它应该返回系统上所有用户帐户的列表。我不必亲自使用此功能,因此我无法提供任何壮观的代码示例,但MSDN信息听起来像您正在寻找的。

答案 1 :(得分:0)

您可以使用NetQueryDisplayInformation API,并按位检查用户信息标记。

我有完全相同的要求,所以我做了示例代码(从MSDN GROUP查询修改)。

我使用的用户标志是:

UF_NORMAL_ACCOUNT
UF_ACCOUNTDISABLE
UF_PASSWD_NOTREQD ---> this ensure we get Human account, Human account always requires password.

工作代码:http://www.cceye.com/list-system-normal-user-account-only/