如何获取远程计算机的用户列表?

littlebird82 2003-04-25 04:51:55
如题。
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjb8000 2003-04-28
  • 打赏
  • 举报
回复
c++buider的:

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;
}
//---------------------------------------------------------------------------
littlebird82 2003-04-28
  • 打赏
  • 举报
回复
每人回答吗?
littlebird82 2003-04-27
  • 打赏
  • 举报
回复
没有人回答吗?

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧