首页 网络安全 安全学院 查看内容

枚举登陆用户源代码

2009-3-25 11:17 524 0

摘要:  #ifndef UNICODE#define UNICODE#endif #include <stdio.h>#include <assert.h>#includ...
关键词: nbsp nStatus DWORD pBuf pszServerName NULL include dwTotalCount NetUserEnum ERROR

 #ifndef UNICODE#define UNICODE#endif #include <stdio.h>#include <assert.h>#include <windows.h> #include <lm.h> int wmain(int argc, wchar_t *argv[]){   LPUSER_INFO_0 pBuf = NULL;   LPUSER_INFO_0 pTmpBuf;   DWORD dwLevel = 0;   DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;   DWORD dwEntriesRead = 0;   DWORD dwTotalEntries = 0;   DWORD dwResumeHandle = 0;   DWORD i;   DWORD dwTotalCount = 0;   NET_API_STATUS nStatus;   LPTSTR pszServerName = NULL;    if (argc > 2)   {      fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);      return 1;   }   // The server is not the default local computer.   //   if (argc == 2)      pszServerName = argv[1];   wprintf(L"\nUser account on %s: \n", pszServerName);   //   // Call the NetUserEnum function, specifying level 0;    //   enumerate global user account types only.   //   do // begin do   {      nStatus = NetUserEnum(pszServerName,                            dwLevel,                            FILTER_NORMAL_ACCOUNT, // global users                            (LPBYTE*)&pBuf,                            dwPrefMaxLen,                            &dwEntriesRead,                            &dwTotalEntries,                            &dwResumeHandle);      //      // If the call succeeds,      //      if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))      {         if ((pTmpBuf = pBuf) != NULL)         {            //            // Loop through the entries.            //            for (i = 0; (i < dwEntriesRead); i++)            {               assert(pTmpBuf != NULL);                if (pTmpBuf == NULL)               {                  fprintf(stderr, "An access violation has occurred\n");                  break;               }               //               // Print the name of the user account.               //               wprintf(L"\t-- %s\n", pTmpBuf->usri0_name);                pTmpBuf++;               dwTotalCount++;            }         }      }      //      // Otherwise, print the system error.      //      else         fprintf(stderr, "A system error has occurred: %d\n", nStatus);      //      // Free the allocated buffer.      //      if (pBuf != NULL)      {         NetApiBufferFree(pBuf);         pBuf = NULL;      }   }   // Continue to call NetUserEnum while    // there are more entries.    //    while (nStatus == ERROR_MORE_DATA); // end do   //   // Check again for allocated memory.   //   if (pBuf != NULL)      NetApiBufferFree(pBuf);   //   // Print the final count of users enumerated.   //   fprintf(stderr, "\nTotal of %d entries enumerated\n", dwTotalCount);    return 0;}  
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部