我正在尝试获取本地计算机上真实用户的列表。真正的我的意思是用户
可以物理登录系统并使用它的,不包括仅远程帐户等。
这就是我已经在做的。
NetUserEnum()
与 FILTER_NORMAL_ACCOUNT
.我得到以下用户:
请注意,这与我从命令行调用 net user 时获得的用户相同,
但在登录对话框中我只能选择管理员。这就是我要的。
NetUserEnum()
上的退货列表,我可以知道哪些帐户被禁用。那留下:LsaEnumerateAccountRights()
检查哪些帐户具有 SeInteractiveLogonRight。他们都有。除了真正的管理员,管理员。其中一些具有 SeDenyInteractiveLogonRight。
这给我留下了:
我发现某处可能我应该先检查组权限,因为我的用户帐户可能继承了 SeInteractiveLogonRight。到目前为止,我还没有找到列出给定帐户(SID 或名称)的组的方法。尝试过
NetUserGetGroups()
但事实证明,这个只返回域组(在我的情况下,“无”)。现在我不知道还能尝试什么。如果我有一个“访问 token ”,看起来一切都会变得更容易,但除了当前登录的用户之外,似乎没有其他方法可以获取它。
大约有 20 个不同的 API 与身份验证相关,这太疯狂了。
我感谢您的帮助
最佳答案
正如您所说,最后一步可能只是过滤属于管理员或用户组的用户。
试试方法NetUserGetLocalGroups用于枚举用户所属的组。
关于winapi - 使用 Win32 API 的 Windows "real"用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931852/