如何获取远程计算机的用户列表?
2009-10-06 14:56
399 查看
如何获取远程计算机的用户列表?
c++buider的: (以后用到再翻译为delphi的)
c++buider的: (以后用到再翻译为delphi的)
TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- AnsiString gethostip(AnsiString &host) { WSADATA wsaData; AnsiString IP; char temp[255]; strcpy(temp,host.c_str()); int pos=0; while(temp[pos++]=='//'); pos--; // temp+=i-1; WSAStartup(MAKEWORD(2,0),&wsaData); if(host.IsEmpty()) { char hostname[128]; if(gethostname(hostname,128)!=0) return AnsiString(""); host=hostname; } try { struct hostent *hp=gethostbyname(temp+pos);//host.c_str()); if(hp == NULL) { IP=""; } else { IP=inet_ntoa(*(struct in_addr*)hp-> h_addr_list[0]); } } catch(...) { IP=""; } WSACleanup(); return IP; } //--------------------------------------------------------------------------- bool EnumNetResource(LPNETRESOURCE lpNR,DWORD dwScope,DWORD dwType) { HANDLE hEnum = 0; DWORD dwResult = WNetOpenEnum( dwScope, // scope of enumeration dwType, // resource types to list 0, // enumerate all resources lpNR, // pointer to resource structure (NULL at first time) &hEnum // handle to resource ); if(dwResult != NO_ERROR) return false; bool bRet=true; DWORD dwEntries = 0xFFFFFFFF; // enumerate all possible entries NETRESOURCE NR[1024]; DWORD dwBuffer=1024*sizeof(NETRESOURCE); while(1) { dwResult = WNetEnumResource(hEnum, // resource-handle &dwEntries, (LPVOID)NR, &dwBuffer ); if(dwResult == ERROR_NO_MORE_ITEMS) { break; } else { if(dwResult != NO_ERROR) { bRet=false; break; } } for(DWORD i=0;i<dwEntries;i++) { //ShowMessage("OK"); if(NR[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER) { char *p=NR[i].lpRemoteName; while(*p=='//') p++; if(*p) { AnsiString IP = gethostip(p); // TListItem *Item1; // Item1 = Form1->ListView1->Items->Add(); // Item1->Caption = p; // Item1->SubItems->Add(IP); Form1->ListBox1->Items->Add(IP+"==="+p); } } else { if((NR[i].dwUsage& RESOURCEUSAGE_CONTAINER)==RESOURCEUSAGE_CONTAINER) { bRet=EnumNetResource(&NR[i],dwScope,dwType); if(bRet==false) break; } } } if(bRet==false) break; } WNetCloseEnum(hEnum) ; return bRet; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ListView1->Clear(); Screen->Cursor=crHourGlass; EnumNetResource(NULL,RESOURCE_GLOBALNET,RESOURCETYPE_ANY); Screen->Cursor=crDefault; } //---------------------------------------------------------------------------
相关文章推荐
- sharepoint2010如何根据用户登录名获取有权限的列表记录?
- Android 如何完整的获取到用户已安装应用列表
- java中如何获取远程计算机post提交的数据并把这些数据写入本地的txt文件中
- 如何使用ASP获取远程的计算机名
- 如何获取远程计算机的时间
- Android 如何完整的获取到用户已安装应用列表
- 如何ping别人的计算机名来获取IP?
- JSP如何获取用户的真实IP地址[转载]
- java如何获取window 客户端的登录用户名称
- 如何 获取用户的ID
- 普通用户如何临时获取root权限
- 获取远程计算机CPU和内存状态
- 在PHP中如何获取用户的真实IP
- 获取指定IP地址远程主机的计算机名和Mac地址
- 批量获取远程计算机MAC
- VC中如何获取当前计算机中所有逻辑驱动器的数目和盘符
- Visual C#中用WMI获取远程计算机信息
- 获取远程计算机硬件信息的vbs脚本
- 超强获取计算机信息类(可获取cpu序列号,网卡地址,ip地址,硬盘id,登录系统用户,计算机名等等)
- 关于Linux下如何获取计算机的硬件信息