获取没有DNS的网络上所有计算机的列表

问候,

我需要一种方法(通过C#或.bat文件)来获取给定网络上所有计算机的列表。 通常情况下,我使用“网络视图”,但这往往只在您的域内起作用(根据我的理解)。 我需要网络上所有可用计算机的名称(或至少IP地址)。

能够获得不属于我的域的所有计算机(在这种情况下我将使用WORKGROUP,或任何默认值)也可以。

Nmap对此有好处 – 使用-O选项进行操作系统指纹识别,使用-oX“filename.xml” 输出为xml,然后可以从c#中解析。

一个合适的命令行是(其中192.168.0.0/24是要扫描的子网):

nmap -O -oX "filename.xml" 192.168.0.0/24 

如果您对猜测操作系统不感兴趣,请忽略-O – 如果您只想使用-sP进行ping扫描,或者阅读文档以获取无数其他选项。

扩展Unkwntech所说的话 –

您还可以执行“广播”ping操作,以避免必须单独ping每个IP地址。

之后,您可以使用“arp”检查ARP缓存并获取哪个IP地址在哪个MAC地址上的列表。

在愤怒中ping所有内容,然后您可以从响应的系统获取netbios信息以识别它的名称。

在我的一个网络应用程序中,我使用NetApi32function进行网络浏览。

代码: http : //gist.github.com/11668