You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Windows登录界面显示的用户列表并排除隐藏用户

获取Windows登录界面显示的用户列表(排除隐藏账户)

NetUserEnum配合FILTER_NORMAL_ACCOUNT会返回所有普通类型账户,但系统内置的隐藏账户(如DefaultAccount、WDAGUtilityAccount)也会被包含——因为它们的账户类型符合普通账户范畴,但带有隐藏标记。要只获取登录界面实际显示的用户,需要额外检查用户账户的隐藏属性。

核心逻辑

Windows用户账户的隐藏状态由USER_INFO_4结构中usri4_flags字段的USER_HIDDEN位标记:该位被设置时,账户不会在登录界面显示。因此实现步骤为:

  1. 枚举所有普通类型账户
  2. 对每个账户获取详细信息,检查USER_HIDDEN标志
  3. 过滤掉带有该标志的账户

修改后的代码示例

#include <windows.h>
#include <lm.h>
#include <iostream>
#pragma comment(lib, "Netapi32.lib")

void PrintUserList() 
{
    USER_INFO_0* pUserInfo = NULL;
    DWORD dwLevel = 0;
    DWORD dwCount = 0;
    DWORD dwTotalEntries = 0;
    NET_API_STATUS nStatus;

    // 枚举所有普通类型账户
    nStatus = NetUserEnum(NULL, dwLevel, FILTER_NORMAL_ACCOUNT, (LPBYTE*)&pUserInfo, MAX_PREFERRED_LENGTH, &dwTotalEntries, &dwCount, NULL);

    if (nStatus == NERR_Success && pUserInfo != NULL) {
        for (DWORD i = 0; i < dwTotalEntries; ++i) {
            LPCWSTR username = pUserInfo[i].usri0_name;
            USER_INFO_4* pUserDetail = NULL;

            // 获取用户详细信息(USER_INFO_4包含账户标志位)
            nStatus = NetUserGetInfo(NULL, username, 4, (LPBYTE*)&pUserDetail);
            if (nStatus == NERR_Success && pUserDetail != NULL) {
                // 检查是否带有USER_HIDDEN标志,无该标志则为登录界面显示用户
                if (!(pUserDetail->usri4_flags & USER_HIDDEN)) {
                    std::wcout << L"登录界面显示用户: " << username << std::endl;
                }
                NetApiBufferFree(pUserDetail);
            }
        }
        NetApiBufferFree(pUserInfo);
    }
    else {
        std::wcerr << L"枚举用户失败,错误码: " << nStatus << std::endl;
    }
}

int main() {
    PrintUserList();
    return 0;
}

关键说明

  • USER_HIDDEN是定义在lmaccess.h中的标志位,值为0x00000080
  • 手动设置为隐藏的用户、系统内置的特殊隐藏账户都会被该逻辑过滤
  • Administrator账户默认可能被隐藏,若需显示需先开启系统的"显示管理员账户"设置,此时该账户的USER_HIDDEN标志会被清除

内容的提问来源于stack exchange,提问作者Joe J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:11:15