所说的“计算机描述”即指在 我的电脑->属性->计算机名页面下的计算机描述项,在网上邻居中显示为备注字段,用以对计算机的名称进行补充。在局域网中,未通过路由,如何能获取到指定IP的计算机描述?本人测试了几种方法,都未成功,请高手指教:
---------------------------------
测试一、向该IP的137端口发送请求包,下面为报文具体内容
const NbtstatPacket:array[0..49]of byte
=($0,$0,$0,$0,$0,$1,
$0,$0,$0,$0,$0,$0,$20,$43,$4b,
$41,$41,$41,$41,$41,$41,$41,$41,
$41,$41,$41,$41,$41,$41,$41,$41,
$41,$41,$41,$41,$41,$41,$41,$41,
$41,$41,$41,$41,$41,$41,$0,$0,$21,$0,$1); 经测试,此方法返回的数据包包含了计算机名称、工作组名称、用户名称等,并未包含计算机描述信息。
---------------------------------测试二、通过wpe挂载一个现成的软件--局域网助手,也就是lanhelper(该软件可以扫描局域网内部的计算机描述),过滤条件为监视所有协议封包,扫描测试后,在该软件的列表中已经显示出计算机描述(计算机“备注”字段),但封包内容中却未包含计算机描述的相关信息。
以此看来,该软件可能不是通过软件自身到局域网获取的“计算机描述”
如果采用DOS命令行的信息回执方式获取计算机描述的话,可能会存在跨工作组无法识别的问题,另外windows内带的网络发现速度也比较慢,相对来讲也不大可行。---------------------------------测试三、通过远程注册表方式,通过扫描,由于客户机大多未开通远程注册表,此节略过。。---------------------------------
对于“计算机描述”或者说“计算机备注”信息的获取,网上资料很少,特来csdn求助,请高手赐教!多谢!
---------------------------------
测试一、向该IP的137端口发送请求包,下面为报文具体内容
const NbtstatPacket:array[0..49]of byte
=($0,$0,$0,$0,$0,$1,
$0,$0,$0,$0,$0,$0,$20,$43,$4b,
$41,$41,$41,$41,$41,$41,$41,$41,
$41,$41,$41,$41,$41,$41,$41,$41,
$41,$41,$41,$41,$41,$41,$41,$41,
$41,$41,$41,$41,$41,$41,$0,$0,$21,$0,$1); 经测试,此方法返回的数据包包含了计算机名称、工作组名称、用户名称等,并未包含计算机描述信息。
---------------------------------测试二、通过wpe挂载一个现成的软件--局域网助手,也就是lanhelper(该软件可以扫描局域网内部的计算机描述),过滤条件为监视所有协议封包,扫描测试后,在该软件的列表中已经显示出计算机描述(计算机“备注”字段),但封包内容中却未包含计算机描述的相关信息。
以此看来,该软件可能不是通过软件自身到局域网获取的“计算机描述”
如果采用DOS命令行的信息回执方式获取计算机描述的话,可能会存在跨工作组无法识别的问题,另外windows内带的网络发现速度也比较慢,相对来讲也不大可行。---------------------------------测试三、通过远程注册表方式,通过扫描,由于客户机大多未开通远程注册表,此节略过。。---------------------------------
对于“计算机描述”或者说“计算机备注”信息的获取,网上资料很少,特来csdn求助,请高手赐教!多谢!
IPHostEntry hostInfo = Dns.GetHostByAddress(hostIPAddress);
Console.WriteLine( "Host name : " + hostInfo.HostName);