В C# как получить список имен локальных компьютеров, таких как просмотр сети в проводнике windows

есть много вопросов о получении имени и IP-адресов локальной машины и несколько о получении IP-адресов других машин в локальной сети (не все ответили правильно). Это совсем другое.

в проводнике windows если я выбираю сеть на боковой панели, я получаю представление о локальных машинах в моей локальной сети, перечисленных по имени машины (в рабочей группе windows, во всяком случае). Как получить ту же информацию программно в C#?

4 ответов


вы можете попробовать использовать


вам нужно транслировать запрос ARP для всех IP-адресов в заданном диапазоне. Начните с определения базового IP-адреса в сети, а затем задайте верхний идентификатор.

Я собирался написать несколько примеров кода и т. д., Но, похоже, кто-то полностью охватил это здесь;

Stackoverflow ARP вопрос


кажется, это то, что вам нужно:Как получить список компьютеров в локальной сети?

В C#: Вы можете использовать решения Gong Библиотека Оболочки (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;
}