检查进程用户是否是管理员c++
我想获取进程的用户名并检查它是否是本地管理员。 或者直接检查当前procees用户是否是本地管理员
I want to get the process's user name and check if it is a local administrator . Or check directly if the current procees user is a local administrator
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 GetUserName() 获取当前用户名,然后调用 NetUserGetInfo() 以及您刚刚获得的服务器名称(本地为 NULL)和用户名。 向其传递 USER_INFO_1 结构,然后访问结构中的usri1_priv。 如果该值为USER_PRIV_ADMIN,那么您就会知道该用户名是管理员。
Get the current username with GetUserName(), then call NetUserGetInfo() with the server name (NULL for local) and username you just got. Pass it a USER_INFO_1 structure, and then access usri1_priv in the structure. If the value is USER_PRIV_ADMIN, then you'll know that the username is an admin.
在 Windows XP SP3、Windows 7 32 位和 64 位上使用管理员用户和非管理员用户进行了测试。
代码从等效的 C# 移植并使用 ATL Windows 安全包装类。
Tested on Windows XP SP3, Windows 7 32 bit and 64 bit with admin user and non-admin user.
Code ported from equivalent C# and uses ATL windows security wrapper classes.
假设您使用的是 Window 操作系统,有一个 shell 函数:IsUserAnAdmin
请参阅 MSDN 文章
这篇文章确实建议滚动您自己的函数,使用 CheckTokenMembership。 甚至还有一个代码示例可以帮助您。
Presuming you're on a Window OS there's a shell function: IsUserAnAdmin
See MSDN article
This article does suggest rolling your own function though, use CheckTokenMembership. There is even a code example to help you along.