所说的“计算机描述”即指在  我的电脑->属性->计算机名页面下的计算机描述项,在网上邻居中显示为备注字段,用以对计算机的名称进行补充。在局域网中,未通过路由,如何能获取到指定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求助,请高手赐教!多谢!

解决方案 »

  1.   

    参考http://topic.csdn.net/u/20070704/21/3a8974fc-f55c-48a0-8059-9bec8c8eebbe.html
      

  2.   

    可以使用Dns.GetHostByAddress方法:IPAddress   hostIPAddress   =   IPAddress.Parse( "IP地址 "); 
          IPHostEntry   hostInfo   =   Dns.GetHostByAddress(hostIPAddress); 
          Console.WriteLine( "Host   name   :   "   +   hostInfo.HostName);