在C#中,我如何获得本地计算机名称列表,如在Windows资源pipe理器中查看networking的内容

关于获取本地计算机的名称和IP地址以及关于获取局域网中其他计算机的IP地址的问题(未全部正确回答)有许多问题。 这是不同的。

在Windows资源pipe理器中,如果我select侧栏上的networking,我可以看到我的局域网上的机器名称列出(在Windows工作组中,无论如何)。 如何在C#中以编程方式获取相同的信息?

您可以尝试使用System.DirectoryServices命名空间。

var root = new DirectoryEntry("WinNT:"); foreach (var dom in root.Children) { foreach (var entry in dom.Children) { if (entry.Name != "Schema") { Console.WriteLine(entry.Name); } } } 

您需要为给定范围内的所有IP广播ARP请求。 首先在您的网络上定义基本IP,然后设置一个较高的标识符。

我打算写一些代码示例等,但似乎有人在这里全面地介绍了这一点;

Stackoverflow的ARP问题

这似乎是你在之后: 如何获得本地网络电脑列表?

在C#中:你可以使用龚解决shell库( https://sourceforge.net/projects/gong-shell/

 public List<String> ListNetworkComputers() { List<String> _ComputerNames = new List<String>(); String _ComputerSchema = "Computer"; System.DirectoryServices.DirectoryEntry _WinNTDirectoryEntries = new System.DirectoryServices.DirectoryEntry("WinNT:"); foreach (System.DirectoryServices.DirectoryEntry _AvailDomains in _WinNTDirectoryEntries.Children) { foreach (System.DirectoryServices.DirectoryEntry _PCNameEntry in _AvailDomains.Children) { if (_PCNameEntry.SchemaClassName.ToLower().Contains(_ComputerSchema.ToLower())) { _ComputerNames.Add(_PCNameEntry.Name); } } } return _ComputerNames; }