在C#中,如何获得本地计算机名列表,如在windows资源管理器中查看网络时获得的名称

在C#中,如何获得本地计算机名列表,如在windows资源管理器中查看网络时获得的名称,c#,windows,lan,workgroup,C#,Windows,Lan,Workgroup,关于获取本地机器的名称和IP地址,有很多问题,关于获取LAN上其他机器的IP地址,也有一些问题(并非所有问题都回答正确)。这是不同的 在windows资源管理器中,如果我在侧栏上选择“网络”,我会看到LAN上的本地机器的视图,按机器名称列出(无论如何,在windows工作组中)。我如何在C#中通过编程获得相同的信息?这似乎是您所追求的: 在C中:你可以使用Gong解决方案 Shell库 () 您可以尝试使用名称空间 var root = new DirectoryEntry("WinNT:");

关于获取本地机器的名称和IP地址,有很多问题,关于获取LAN上其他机器的IP地址,也有一些问题(并非所有问题都回答正确)。这是不同的


在windows资源管理器中,如果我在侧栏上选择“网络”,我会看到LAN上的本地机器的视图,按机器名称列出(无论如何,在windows工作组中)。我如何在C#中通过编程获得相同的信息?

这似乎是您所追求的:

在C中:你可以使用Gong解决方案 Shell库 ()

您可以尝试使用名称空间

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,然后设置一个较高的标识符

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

公共列表列表网络计算机()
{
列表_ComputerNames=新列表();
字符串_ComputerSchema=“Computer”;
System.DirectoryServices.DirectoryEntry\u WinNTDirectoryEntries=new System.DirectoryServices.DirectoryEntry(“WinNT:”);
foreach(System.DirectoryServices.DirectoryEntry\u WinntDirectory Entries.Children中的可用域)
{
foreach(System.DirectoryServices.DirectoryEntry\u PCNameEntry in\u AvailDomains.Children)
{
如果(_PCNameEntry.SchemaClassName.ToLower())包含(_ComputerSchema.ToLower())
{
_ComputerNames.Add(_PCNameEntry.Name);
}
}
}
返回计算机名称;
}

看看这个解决方案:请遵循[URL]()这将有助于提高您的内容质量
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;
}