vc判断计算机用户是否激活,VC获取Windows所有用户的用户名

本文介绍了一种使用C++在Windows环境下枚举系统中用户名的方法。通过调用NetUserEnum函数,可以获取当前系统中所有普通用户的名称,并将其存储到vector容器中以供进一步处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include

#include

#include

#include

#include

using namespace std;

vectorm_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 );

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值