1 #pragma comment(lib,"Netapi32.lib")
2 #include <BaseTsd.h>
3 #include <Lm.h>
4 #include <LMERR.H>
5 #include <LMAPIBUF.H>
6 #include <vector>
7
8 vector<CString> m_account;
9
10
11 void GetOSUserName()
12
13 {
14
15 LPUSER_INFO_1 pBuf = NULL;
16
17 LPUSER_INFO_1 pTmpBuf ;
18
19 DWORD dwLevel = 1;
20
21 DWORD dwPrefMaxLen = -1;
22
23 DWORD dwEntriesRead = 0;
24
25 DWORD dwTotalEntries = 0;
26
27 DWORD dwResumeHandle = 0;
28
29 NET_API_STATUS nStatus;
30
31 LPTSTR pszServerName = NULL;
32
33 nStatus = NetUserEnum( (LPCWSTR) pszServerName , dwLevel , FILTER_NORMAL_ACCOUNT ,
34
35 (LPBYTE*)&pBuf, dwPrefMaxLen , &dwEntriesRead , &dwTotalEntries , &dwResumeHandle );
36
37 if( ( nStatus == NERR_Success ) || ( nStatus == ERROR_MORE_DATA ) )
38 {
39 if( ( pTmpBuf=pBuf )!=NULL )
40 {
41 for( DWORD i = 0; i < dwEntriesRead ; ++i )
42
43 {
44 CString csFlag;
45
46 csFlag.Format( _T( "%s,%ld" ) , pTmpBuf->usri1_name , pBuf->usri1_priv );
47 //得到用户名 判断权限 和名称排除
48 if( pTmpBuf->usri1_priv == USER_PRIV_ADMIN || pTmpBuf->usri1_priv == USER_PRIV_USER &&
( CString ( pTmpBuf->usri1_name ) != "ASPNET" ) )
49 {
50 m_account.push_back( (CString) pTmpBuf->usri1_name );
51 }
52
53 pTmpBuf++;
54 }
55 }
56 }
57 else
58 {
59 ::MessageBox( NULL , _T("A system error has occurred") , _T("ERROR") , MB_OK );
60 }
61 if( pBuf != NULL )
62
63 {
64 //NetApiBufferFree( pBuf );
65 pBuf = NULL;
66 }
67 while ( nStatus == ERROR_MORE_DATA );
68 if (pBuf != NULL)
69 NetApiBufferFree( pBuf );
70 }