问候,

我需要一种方法(通过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信息以识别它的名称。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top