0

我正在尝试找到解决方案或 winapi 来检查本地计算机上的用户名是否为管理员。
该进程在 Windows 凭据提供程序下运行,因此我相信检查当前用户线程不会给我想要的值。

请注意,我已经阅读了 StackOverflow 中指向MSDN的其他答案,该 MSDN评估当前线程的用户访问令牌。

我有需要查找访问信息的用户名,用户是否在当前机器上具有管理员访问权限

欢迎任何指示或建议。

4

1 回答 1

1

不确定它是否会满足您的要求,但 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,但是(如果没记错的话)这仅显示直接分配给相关帐户的权利/特权,而不是通过组成员资格等获得的权利/特权(但已经有一段时间了,我的记忆距离完美还有很长的路要走)。

于 2017-07-16T07:08:24.167 回答