Разрешить имя NetBIOS в Windows 7

По этой ссылке 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. По крайней мере, у меня нет сервера WINS.

Мой последний вопрос: как мне сделать разрешение имен 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 ответ

Решение

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

Что касается того, как определить имя, я смог сделать это:

System.Net.Dns.GetHostAddresses ("имя хоста")

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

Другие вопросы по тегам