jjccx

jjccx's blog
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

局域网枚举活动电脑

Posted on 2005-03-23 17:37  jjccx  阅读(435)  评论(1)    收藏  举报

InitWinSock();
struct hostent *host;

DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *netResource = NULL;
HANDLE hEnum;
WNetOpenEnum(dwScope, NULL, NULL, NULL, &hEnum);

if (hEnum)
{
 DWORD count = 0xFFFFFFFF;
 DWORD bufferSize = 2048;
 LPVOID buffer = new _TCHAR[2048];
 WNetEnumResource(hEnum, &count, buffer, &bufferSize);
 netResource = (NETRESOURCE*)buffer;

 char hostName[200];
 hostName[0] = '\0';
 gethostname(hostName, sizeof(hostName));
 printf("Host Name:%s\n", hostName);

 for(UINT i = 0; i < bufferSize / sizeof(NETRESOURCE); i++, netResource++)
 {
  if(netResource->dwUsage == RESOURCEUSAGE_CONTAINER && netResource->dwType == RESOURCETYPE_ANY)
  {
   if(netResource->lpRemoteName)
   {
    LPTSTR fullName = netResource->lpRemoteName;

    if(fullName[0] == '\\' && fullName[1] == '\\')
    {
     fullName = fullName + 2;
    }

    host = gethostbyname(fullName);

    if(host == NULL)
     continue;

    printf("Client:\t%s\n\t%s\n", fullName, inet_ntoa(*(struct in_addr *)host->h_addr_list[0]));
   }
  }
 }

 delete buffer;
 WNetCloseEnum( hEnum );
}

CleanupWinSock();