Разрешить имя NetBIOS в Windows 7 - PullRequest
6 голосов
/ 20 января 2011

Согласно этой ссылке , NetBIOS больше не поддерживается, начиная с Windwos Vista. Конечно же, я больше не вижу ни одного имени NetBIOS в свойствах сети.

Однако, когда я пишу коды на моем Windows 7, я все еще сталкиваюсь с именами NetBIOS во многих местах. Например

  1. Я все еще могу использовать «MYDOMAIN \ Harvey» для входа в систему на моей машине, где я считаю MYDOMAIN именем NetBIOS.
  2. Переменные среды COMPUTERNAME и USERDOMAIN остаются именами NetBIOS. Я ожидаю увидеть здесь DNS-имена
  3. Мои имена экземпляров SQL Server, поступающие из моей SQL Server Management Studio, все еще похожи на MYMACHINE \ Instance1.

Я предполагаю, что Microsoft все еще поддерживает некоторые его части для обратной совместимости. Я хочу понять, как Windows 7 собирается преобразовать имя NetBIOS в IP-адрес. Я обнаружил, что эта статья объясняет, как работает разрешение имен NetBIOS , но я боюсь, что в Windows 7 это больше не так.

Мой последний вопрос: как мне сделать разрешение имен NetBIOS программным способом, предпочтительно в C #. Я в порядке, чтобы использовать PInvoke.

UDAPTE

Тридус был прав. Я могу использовать System.Net.Dns.GetHostAddresses ("имя хоста") для разрешения имени NetBIOS. Я использовал отражатель, чтобы увидеть, что происходит под капотом. Он вызывает gethostbyname () из ws2_32.dll

Здесь объясняет, что gethostbyname () будет выполнять разрешение имен NetBIOS.

  1. Проверьте имя локального хоста на соответствие имени.
  2. Проверьте файл Hosts на соответствие записи имени.
  3. Если DNS-сервер настроен, запросите его.
  4. Если совпадений не найдено, попытайтесь разрешить имя NetBIOS.

О тайне NetBIOS, не поддерживаемой в этой ссылке , я думаю, это просто означает, что API не поддерживается. Люди в ServerFault считают, что NetBIOS все еще поддерживается в Windows 7.

1 Ответ

5 голосов
/ 20 января 2011

Сам NetBIOS, так как старый протокол может не поддерживаться, но SMB / CIFS все еще есть, и поэтому \ имя_хоста для общего доступа к файлам и тому подобное все еще работает.сделать это:

System.Net.Dns.GetHostAddresses ("hostname")

Я нахожусь в домене, поэтому он может просто добавлять суффикс DNS и выполнять поиск DNS, ноработал на меня.Попробуйте.:)

...