0

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

在阅读有关相关结构和类似堆栈问题的 MSDN 文档后,我看不到任何东西可以让我过滤到我需要的帐户。

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

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

有任何想法吗?

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

4

2 回答 2

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/

于 2013-12-17T04:07:36.247 回答
0

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

于 2012-05-08T14:30:28.553 回答