我正在尝试找到解决方案或 winapi 来检查本地计算机上的用户名是否为管理员。
该进程在 Windows 凭据提供程序下运行,因此我相信检查当前用户线程不会给我想要的值。
请注意,我已经阅读了 StackOverflow 中指向MSDN的其他答案,该 MSDN评估当前线程的用户访问令牌。
我有需要查找访问信息的用户名,用户是否在当前机器上具有管理员访问权限
欢迎任何指示或建议。
我正在尝试找到解决方案或 winapi 来检查本地计算机上的用户名是否为管理员。
该进程在 Windows 凭据提供程序下运行,因此我相信检查当前用户线程不会给我想要的值。
请注意,我已经阅读了 StackOverflow 中指向MSDN的其他答案,该 MSDN评估当前线程的用户访问令牌。
我有需要查找访问信息的用户名,用户是否在当前机器上具有管理员访问权限
欢迎任何指示或建议。
我不确定它是否会满足您的要求,但 NetUserGetInfo 的字段至少与您所要求的非常相似:
bool is_user_admin()
{
bool result;
DWORD rc;
wchar_t user_name[256];
USER_INFO_1 *info;
DWORD size = sizeof( user_name );
GetUserNameW( user_name, &size);
rc = NetUserGetInfo( NULL, user_name, 1, (byte **) &info );
if ( rc != NERR_Success )
return false;
result = info->usri1_priv == USER_PRIV_ADMIN;
NetApiBufferFree( info );
return result;
}
还有LsaEnumerateAccountRights
,但是(如果没记错的话)这仅显示直接分配给相关帐户的权利/特权,而不是通过组成员资格等获得的权利/特权(但已经有一段时间了,我的记忆距离完美还有很长的路要走)。