我想获取进程的用户名并检查它是否是本地管理员。或者直接检查当前procees用户是本地管理员检查进程用户是否为管理员C++
1
A
回答
0
假设你是在一个窗口OS有一个壳功能:IsUserAnAdmin
本文不建议使用您自己的功能尽管如此,使用CheckTokenMembership。甚至有一个代码示例可以帮助你。
3
获取当前用户名和GetUserName(),然后调用NetUserGetInfo()与服务器名称(NULL为本地)和您刚刚得到的用户名。将其传递给USER_INFO_1结构,然后在结构中访问usri1_priv。如果值为 USER_PRIV_ADMIN,那么您将知道用户名是管理员。
2
使用管理员用户和非管理员用户在Windows XP SP3,Windows 7 32位和64位上进行测试。 代码从等效的C#移植并使用ATL Windows安全包装类。
#include <atlbase.h>
#include <atlsecurity.h>
// The function returns true if the user who is running the
// application is a member of the Administrators group,
// which does not necessarily mean the process has admin privileges.
bool IsAdministrator(HRESULT &rHr)
{
bool bIsAdmin = false;
try
{
// Open the access token of the current process.
ATL::CAccessToken aToken;
if (!aToken.GetProcessToken(TOKEN_QUERY))
{
throw MAKE_SCODE(SEVERITY_ERROR, FACILITY_WIN32,
::GetLastError());
}
// Query for the access token's group information.
ATL::CTokenGroups groups;
if (!aToken.GetGroups(&groups))
{
throw MAKE_SCODE(SEVERITY_ERROR, FACILITY_WIN32,
::GetLastError());
}
// Iterate through the access token's groups
// looking for a match against the builtin admins group.
ATL::CSid::CSidArray groupSids;
ATL::CAtlArray<DWORD> groupAttribs;
groups.GetSidsAndAttributes(&groupSids, &groupAttribs);
for (UINT i = 0; !bIsAdmin && i < groupSids.GetCount(); ++i)
{
bIsAdmin = groupSids.GetAt(i) == ATL::Sids::Admins();
}
rHr = S_OK;
}
catch (HRESULT hr)
{
rHr = hr;
}
return bIsAdmin;
}
相关问题
- 1. 检查用户是否是管理员/游戏管理员[库MySQLi]
- 2. 检查当前用户是否为管理员
- 3. WSS 3.0功能 - 检查用户是否为农场管理员
- 4. 如何检查是否应用程序作为管理员VB.NET
- 5. 如何检查用户是否是“管理员”
- 6. 检查用户是否是laravel中的管理员
- 7. 检查用户是否是管理员(vb)
- 8. 使用before_filter检查管理员或用户是否登录
- 9. 如何检查管理员或用户是否登录odoo
- 10. 检查请求的用户是否具有管理员权限
- 11. Python - 检查用户是否具有管理员权限
- 12. 如何检查当前用户是管理员组的C#
- 13. 如何检查给定用户是否是内置管理员组的成员?
- 14. 检测用户是否是FB JS SDK的页面管理员
- 15. 我如何检查我的程序是否以用户身份作为管理员运行(Vista/Win7,C++)
- 16. 检查管理员
- 17. 如何检查现有的用户帐户是否在管理员组中?
- 18. 检查用户是否是会员
- 19. 如何检查用户是否是App Engine中的Google Apps域的管理员?
- 20. 如何检查用户是否是该机器上的管理员
- 21. 检查用户是否是外部计算机上的本地管理员
- 22. 如何检查当前用户是否是Realm SyncUser的管理员?
- 23. 检查令牌是否属于管理员组的成员
- 24. 使用AngularJS服务来检查用户是否具有管理员权限
- 25. C#管理员权限 - 检查
- 26. 如何检查管理员权限C#
- 27. 检查用户是否以管理员模式在Windows 7中登录Chrome
- 28. 如何检查一个Windows帐户是否是vb 2013中的pc管理员?
- 29. Java - 检查用户是谷歌应用程序域的域管理员
- 30. 检查进程是否作为管道运行
哪个操作系统?这可能会有所作为... – crashmstr 2009-06-11 13:46:13
“本地管理员”很可能在Windows上。 – sharptooth 2009-06-11 13:54:40