怎么得到远程机器的当前用户名(Windows机器)? (50分)

  • 主题发起人 主题发起人 autumn
  • 开始时间 开始时间
A

autumn

Unregistered / Unconfirmed
GUEST, unregistred user!
使用delphi实现。现在我的做法是:
参照大富翁以前的问题(没有源代码)使用nbtstat -a 地址 >a.txt
然后在a.txt查找<03>显示前面的那段就是登陆的用户名称
用api是如何实现的?
 
API:GETNAMEBYHOST?
 
好像,没有这个api?:(
 
注册表中HKEY_LOCAL_MACHINE/Network/Logon的值即为当前登陆Windows的用户名
 
:)没写全
注册表中HKEY_LOCAL_MACHINE/Network/Logon下的username的值即为当前登陆Windows的用户名

 
好像,没有这个api?:(
>好象是GETHOSTBYIP?忘记了,一定有的。先输入然后根据提示得到(USES WINSOCK)
太久了,以前写过,忘记了:)
 
我指的是网上轮据的所登陆的用户名称
 
listen后的参数是什么?
 
GetHostbyAddr getHostbyName
 
<marquee><font color="blue"><strong><h5>如果能获得,我太高兴了,
黑客高手快出现....</strong></font></marquee></h5>
 
//希望对你有用......
//uses winsock; 通过IP地址得到机器名
function iptoname(ip:string):string;
var
WSAData:TWSAData;
p:PHostEnt;
InetAddr:dword;
begin
result:='''';
WSAStartup(2, WSAData);
InetAddr:= inet_addr(PChar(IP));
try
p:=GetHostByAddr(@InetAddr, Length(IP), PF_Inet);
if p<> nil then result:=p^.h_name;
except
result:='''';
end;
end;
 
好像可以,在WinSock.Pas中,叫WNetGetUser,好像是这个,你看看。
 
好像不行[:(]
 
分也太少了,好些黑软有此功能 但程序不能在9X上跑
等待真正高手的回答
 
netapi32.dll
 
//uses winsock; 通过IP地址得到机器名
function iptoname(ip:string):string;
var
WSAData:TWSAData;
p:PHostEnt;
InetAddr:dword;
begin
result:='''';
WSAStartup(2, WSAData);
InetAddr:= inet_addr(PChar(IP));
try
p:=GetHostByAddr(@InetAddr, Length(IP), PF_Inet);
if p<> nil then result:=p^.h_name;
except
result:='''';
end;
end;
这段代码我试过, 不过只对局域网的机器有效,对internet上的机器不行,且速度不太快

我有看到相关的资料,是通过udp协议,往远程机器的137端口发送UDP报文,远程机器会返回
数据,其中就有远程机器的当前用户名,机器名称等信息,但如何具体实现我就不太清楚了
 
谢谢q兄指教。小小意思
 
后退
顶部