ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Windows用户相关操作

2019-03-04 11:54:31  阅读:302  来源: 互联网

标签:pBuf Windows nStatus 用户 argv stderr DWORD 操作 include


  • 获取所有用户
NET_API_STATUS NetUserEnum(
  LPCWSTR servername,
  DWORD level,
  DWORD filter,
  LPBYTE* bufptr,
  DWORD prefmaxlen,
  LPDWORD entriesread,
  LPDWORD totalentries,
  LPDWORD resume_handle
);
  1 #ifndef UNICODE
  2 #define UNICODE
  3 #endif
  4 
  5 #include <stdio.h>
  6 #include <assert.h>
  7 #include <windows.h> 
  8 #include <lm.h>
  9 
 10 int wmain(int argc, wchar_t *argv[])
 11 {
 12    LPUSER_INFO_0 pBuf = NULL;
 13    LPUSER_INFO_0 pTmpBuf;
 14    DWORD dwLevel = 0;
 15    DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
 16    DWORD dwEntriesRead = 0;
 17    DWORD dwTotalEntries = 0;
 18    DWORD dwResumeHandle = 0;
 19    DWORD i;
 20    DWORD dwTotalCount = 0;
 21    NET_API_STATUS nStatus;
 22    LPTSTR pszServerName = NULL;
 23 
 24    if (argc > 2)
 25    {
 26       fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
 27       exit(1);
 28    }
 29    // The server is not the default local computer.
 30    //
 31    if (argc == 2)
 32       pszServerName = argv[1];
 33    wprintf(L"\nUser account on %s: \n", pszServerName);
 34    //
 35    // Call the NetUserEnum function, specifying level 0; 
 36    //   enumerate global user account types only.
 37    //
 38    do // begin do
 39    {
 40       nStatus = NetUserEnum(pszServerName,
 41                             dwLevel,
 42                             FILTER_NORMAL_ACCOUNT, // global users
 43                             (LPBYTE*)&pBuf,
 44                             dwPrefMaxLen,
 45                             &dwEntriesRead,
 46                             &dwTotalEntries,
 47                             &dwResumeHandle);
 48       //
 49       // If the call succeeds,
 50       //
 51       if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
 52       {
 53          if ((pTmpBuf = pBuf) != NULL)
 54          {
 55             //
 56             // Loop through the entries.
 57             //
 58             for (i = 0; (i < dwEntriesRead); i++)
 59             {
 60                assert(pTmpBuf != NULL);
 61 
 62                if (pTmpBuf == NULL)
 63                {
 64                   fprintf(stderr, "An access violation has occurred\n");
 65                   break;
 66                }
 67                //
 68                //  Print the name of the user account.
 69                //
 70                wprintf(L"\t-- %s\n", pTmpBuf->usri0_name);
 71 
 72                pTmpBuf++;
 73                dwTotalCount++;
 74             }
 75          }
 76       }
 77       //
 78       // Otherwise, print the system error.
 79       //
 80       else
 81          fprintf(stderr, "A system error has occurred: %d\n", nStatus);
 82       //
 83       // Free the allocated buffer.
 84       //
 85       if (pBuf != NULL)
 86       {
 87          NetApiBufferFree(pBuf);
 88          pBuf = NULL;
 89       }
 90    }
 91    // Continue to call NetUserEnum while 
 92    //  there are more entries. 
 93    // 
 94    while (nStatus == ERROR_MORE_DATA); // end do
 95    //
 96    // Check again for allocated memory.
 97    //
 98    if (pBuf != NULL)
 99       NetApiBufferFree(pBuf);
100    //
101    // Print the final count of users enumerated.
102    //
103    fprintf(stderr, "\nTotal of %d entries enumerated\n", dwTotalCount);
104 
105    return 0;
106 }
  • 获取用户信息
NET_API_STATUS NetUserGetInfo(
  LPCWSTR servername,
  LPCWSTR username,
  DWORD level,
  LPBYTE* bufptr
);
 1 #ifndef UNICODE
 2 #define UNICODE
 3 #endif
 4 
 5 #include <stdio.h>
 6 #include <windows.h> 
 7 #include <lm.h>
 8 
 9 int wmain(int argc, wchar_t *argv[])
10 {
11    DWORD dwLevel = 10;
12    LPUSER_INFO_10 pBuf = NULL;
13    NET_API_STATUS nStatus;
14 
15    if (argc != 3)
16    {
17       fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
18       exit(1);
19    }
20    //
21    // Call the NetUserGetInfo function; specify level 10.
22    //
23    nStatus = NetUserGetInfo(argv[1],
24                             argv[2],
25                             dwLevel,
26                             (LPBYTE *)&pBuf);
27    //
28    // If the call succeeds, print the user information.
29    //
30    if (nStatus == NERR_Success)
31    {
32     if (pBuf != NULL)
33       {
34          wprintf(L"\n\tAccount:      %s\n", pBuf->usri10_name);
35          wprintf(L"\tComment:      %s\n", pBuf->usri10_comment);
36          wprintf(L"\tUser comment: %s\n", pBuf->usri10_usr_comment);
37          wprintf(L"\tFull name:    %s\n", pBuf->usri10_full_name);
38       }
39    }
40    // Otherwise, print the system error.
41    //
42    else
43       fprintf(stderr, "A system error has occurred: %d\n", nStatus);
44    //
45    // Free the allocated memory.
46    //
47    if (pBuf != NULL)
48       NetApiBufferFree(pBuf);
49 
50    return 0;
51 }
  • 修改用户信息
NET_API_STATUS NetUserSetInfo(
  LPCWSTR servername,
  LPCWSTR username,
  DWORD level,
  LPBYTE buf,
  LPDWORD parm_err
);
 1 #ifndef UNICODE
 2 #define UNICODE
 3 #endif
 4 
 5 #include <stdio.h>
 6 #include <windows.h> 
 7 #include <lm.h>
 8 
 9 int wmain(int argc, wchar_t *argv[])
10 {
11    DWORD dwLevel = 1008;
12    USER_INFO_1008 ui;
13    NET_API_STATUS nStatus;
14 
15    if (argc != 3)
16    {
17       fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
18       exit(1);
19    }
20    // Fill in the USER_INFO_1008 structure member.
21    // UF_SCRIPT: required for LAN Manager 2.0 and
22    //  Windows NT and later.
23    //
24    ui.usri1008_flags = UF_SCRIPT | UF_ACCOUNTDISABLE;
25    //
26    // Call the NetUserSetInfo function 
27    //  to disable the account, specifying level 1008.
28    //
29    nStatus = NetUserSetInfo(argv[1],
30                             argv[2],
31                             dwLevel,
32                             (LPBYTE)&ui,
33                             NULL);
34    //
35    // Display the result of the call.
36    //
37    if (nStatus == NERR_Success)
38       fwprintf(stderr, L"User account %s has been disabled\n", argv[2]);
39    else
40       fprintf(stderr, "A system error has occurred: %d\n", nStatus);
41 
42    return 0;
43 }
  • 增加用户
NET_API_STATUS NetUserAdd(
  LMSTR servername,
  DWORD level,
  LPBYTE buf,
  LPDWORD parm_err
);
 1 #ifndef UNICODE
 2 #define UNICODE
 3 #endif
 4 
 5 #include <stdio.h>
 6 #include <windows.h> 
 7 #include <lm.h>
 8 
 9 int wmain(int argc, wchar_t *argv[])
10 {
11    USER_INFO_1 ui;
12    DWORD dwLevel = 1;
13    DWORD dwError = 0;
14    NET_API_STATUS nStatus;
15 
16    if (argc != 3)
17    {
18       fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
19       exit(1);
20    }
21    //
22    // Set up the USER_INFO_1 structure.
23    //  USER_PRIV_USER: name identifies a user, 
24    //    rather than an administrator or a guest.
25    //  UF_SCRIPT: required for LAN Manager 2.0 and
26    //    Windows NT and later.
27    //
28    ui.usri1_name = argv[2];
29    ui.usri1_password = argv[2];
30    ui.usri1_priv = USER_PRIV_USER;
31    ui.usri1_home_dir = NULL;
32    ui.usri1_comment = NULL;
33    ui.usri1_flags = UF_SCRIPT;
34    ui.usri1_script_path = NULL;
35    //
36    // Call the NetUserAdd function, specifying level 1.
37    //
38    nStatus = NetUserAdd(argv[1],
39                         dwLevel,
40                         (LPBYTE)&ui,
41                         &dwError);
42    //
43    // If the call succeeds, inform the user.
44    //
45    if (nStatus == NERR_Success)
46       fwprintf(stderr, L"User %s has been successfully added on %s\n",
47                argv[2], argv[1]);
48    //
49    // Otherwise, print the system error.
50    //
51    else
52       fprintf(stderr, "A system error has occurred: %d\n", nStatus);
53 
54    return 0;
55 }
  • 用户删除
NET_API_STATUS NetUserDel(
  LPCWSTR servername,
  LPCWSTR username
);
 1 #ifndef UNICODE
 2 #define UNICODE
 3 #endif
 4 
 5 #include <stdio.h>
 6 #include <windows.h> 
 7 #include <lm.h>
 8 
 9 int wmain(int argc, wchar_t *argv[])
10 {
11    DWORD dwError = 0;
12    NET_API_STATUS nStatus;
13    //
14    // All parameters are required.
15    //
16    if (argc != 3)
17    {
18       fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
19       exit(1);
20    }
21    //
22    // Call the NetUserDel function to delete the share.
23    //
24    nStatus = NetUserDel(argv[1], argv[2]);
25    //
26    // Display the result of the call.
27    //
28    if (nStatus == NERR_Success)
29       fwprintf(stderr, L"User %s has been successfully deleted on %s\n",
30                argv[2], argv[1]);
31    else
32       fprintf(stderr, "A system error has occurred: %d\n", nStatus);
33 
34    return 0;
35 }

 

标签:pBuf,Windows,nStatus,用户,argv,stderr,DWORD,操作,include
来源: https://www.cnblogs.com/wuyuan2011woaini/p/10469724.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有