如何查询局域网中NT服务器的计算机名?(50分)

  • 主题发起人 主题发起人 sunnyli
  • 开始时间 开始时间
S

sunnyli

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:
请问,如何用函数实现获取本局域网内所有装了windowsNT 的计算机
名称(有可能有多个服务器),结果最好是字符串型。(如果实在不行的话,能否列出本本局域网
内所有计算机的名称?)
开发工具为delphi5.0

本人愚钝,麻烦您详细一点。
望多多指教!!急!!!!
我已经倾尽我所有积蓄了,请别嫌少!!!
 
怎么没人回答????
 
You should use API function

NET_API_STATUS NetServerEnum(
LPWSTR servername,
DWORD level,
LPBYTE *bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
DWORD servertype,
LPWSTR domain,
LPDWORD resume_handle
);

 
duz:
Thanks for your help!
but i can't understand it very clear!
could you give a code sample? or tell me more detials.

Thanks you again! Waiting your good news!
my e-mail: sun_no1@sina.com
 
清华大学出了本书,叫做DELPHI4.0/5.0技巧.有介绍
 
sunnyli:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
function GetDomainName(Ip: string): string;
//获得局域网内IP地址的机器名,只对网络设置设为允许其它人使用我的机子的机器有效
var
pH : PHostent;
data : twsadata;
ii : dword;
begin
WSAStartup($101, Data);
ii := inet_addr(pchar(ip));
pH := gethostbyaddr(@ii, sizeof(ii), PF_INET);
if (ph <> nil) then
result := pH.h_name
else
begin
result := '未知的计算机';
end;
WSACleanup;
end;

你可以在程序中将局域网中的IP地址用循环从这个函数过一遍,
(因为一般情况下一局域网内部的IP地址都是设成同一域的,
用循环应该不会慢,只要你的机子不是什么286、386的)
然后把得到的机器名都保存起来就行了。

 
多人接受答案了。
 
后退
顶部