3

问候,

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

能够获取不是我的域上的所有计算机(在这种情况下,我会使用 WORKGROUP,或者任何默认值)也可以。

4

4 回答 4

7

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

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

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

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

于 2008-09-19T21:17:28.840 回答
2

为了扩展Unkwntech所说的-

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

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

于 2008-09-22T12:30:41.000 回答
1

Ping 愤怒的一切,然后您可以从响应识别它的名称的系统中获取 netbios 信息。

于 2008-09-19T21:15:49.327 回答
1

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

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

于 2008-09-19T22:16:26.623 回答