我正在尝试获取本地计算机上的真实用户列表.实际上,我指的是可以物理登录系统并使用它的用户,不包括仅限远程帐户等.
这就是我已经做过的事情.
打电话NetUserEnum()给FILTER_NORMAL_ACCOUNT.
我得到以下用户:
请注意,这与从命令行调用net user时获得的用户相同,但在登录对话框中,我只能选择Administrator.这就是我要的.
从返回列表中NetUserEnum(),我可以判断哪些帐户被禁用.离开:
然后我跑去LsaEnumerateAccountRights()检查哪些帐户有SeInteractiveLogonRight.
所有人都拥有它.除了真实的,管理员.其中一些有SeDenyInteractiveLogonRight.这让我:
我发现可能首先要检查组权限,因为我的用户帐户可能正在继承SeInteractiveLogonRight.到目前为止,我还没有找到一种方法来列出给定帐户(SID或名称)的组.尝试NetUserGetGroups()但事实证明这个只返回域组(在我的情况下,"无").
现在我不知道还有什么可以尝试.看起来如果我有一个"访问令牌",一切都会更容易,但似乎没有办法为当前登录以外的用户获取.有20个与身份验证相关的不同API,这很疯狂.
我感谢您的帮助