• 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 );  
    }

  • 相关阅读:
    线程池参数详解
    线程池各个参数详解以及如何自定义线程池
    fastdfs 安装
    SQL 执行顺序
    《SQL 进阶教程》 查找局部不一致的数据
    redis 高性能的原因
    一致性hash
    环境部署数据库报错
    redis 常用命令
    redis 高级学习和应用场景
  • 原文地址:https://www.cnblogs.com/pbreak/p/1806279.html
Copyright © 2020-2023  润新知