2017年計算機等級考試二級C++輔導:VC獲取Windows所有用戶的用戶名

字號:


    #include
    #include
    #include
    #include
    #include
    using namespace std;
    vector m_account;
    GetOSUserName()
    {
    LPUSER_INFO_1 pBuf = NULL;
    LPUSER_INFO_1 pTmpBuf ;
    DWORD dwLevel = 1;
    DWORD dwPrefMaxLen = -1;
    DWORD dwEntriesRead = 0;
    DWORD dwTotalEntries = 0;
    DWORD dwResumeHandle = 0;
    NET_API_STATUS nStatus;
    LPTSTR pszServerName = NULL;
    nStatus = NetUserEnum( (LPCWSTR) pszServerName , dwLevel , FILTER_NORMAL_ACCOUNT ,
    (LPBYTE*)&pBuf, dwPrefMaxLen , &dwEntriesRead , &dwTotalEntries , &dwResumeHandle );
    if( ( nStatus == NERR_Success ) || ( nStatus == ERROR_MORE_DATA ) )
    {
    if( ( pTmpBuf=pBuf )!=NULL )
    {
    for( DWORD i = 0; i < dwEntriesRead ; ++i )
    {
    CString csFlag;
    csFlag.Format( _T( "%s,%ld" ) , pTmpBuf->usri1_name , pBuf->usri1_priv );
    if( pTmpBuf->usri1_priv == USER_PRIV_ADMIN || pTmpBuf->usri1_priv == USER_PRIV_USER &&
    ( CString ( pTmpBuf->usri1_name ) != "ASPNET" ) )
    {
    m_account.push_back( (CString) pTmpBuf->usri1_name );
    }
    pTmpBuf++;
    }
    }
    }
    else
    {
    ::MessageBox( NULL , _T("A system error has occurred") , _T("ERROR") , MB_OK );
    }
    if( pBuf != NULL )
    {
    NetApiBufferFree( pBuf );
    pBuf = NULL;
    }
    while ( nStatus == ERROR_MORE_DATA );
    if (pBuf != NULL)
    NetApiBufferFree( pBuf );
    }