关于获取本地机器的名称和 IP 地址有很多问题,还有一些关于获取 LAN 上其他机器的 IP 地址的问题(并非所有问题都正确回答)。这是不同的。
在 Windows 资源管理器中,如果我在侧栏上选择网络,我会看到我的 LAN 上按机器名称列出的本地机器的视图(无论如何,在 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,然后设置一个上位标识符。
我打算写一些代码示例等,但看起来有人在这里全面介绍了这一点;
这似乎是您所追求的:如何获取本地网络计算机列表?
在 C# 中:您可以使用 Gong Solutions 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;
}