VC 获取Windows所有用户的用户名

#include <LMACCESS.H>
#include <LMERR.H>
#include <LMAPIBUF.H>

#include <iostream>

#include <vector>

using namespace std;

vector<CString> 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 );  
}

原文地址:https://www.cnblogs.com/pbreak/p/1806279.html