在Windows 7上解析NetBIOS名称

Har*_*wok 6 c# windows protocols netbios

根据此链接,从Windwos Vista开始不再支持NetBIOS.果然,我再也看不到网络属性中的任何NetBIOS名称了.

但是,当我在Windows 7上编写代码时,我仍然在许多地方遇到NetBIOS名称.例如

  1. 我仍然可以使用"MYDOMAIN\Harvey"来登录我的机器,我相信MYDOMAIN是一个NetBIOS名称.
  2. 环境变量COMPUTERNAME和USERDOMAIN仍然是NetBIOS名称.我期待在这里看到DNS名称
  3. 从我的SQL Server Management Studio发出的我的SQL Server实例名称仍然类似于MYMACHINE\Instance1.

我猜微软仍然保留了一些它的向后兼容性.我想了解Windows 7如何将NetBIOS名称解析为IP地址.我发现这篇文章解释了NetBIOS名称解析的工作原理,但我担心在Windows 7中不再适用.至少我没有WINS服务器.

我的最后一个问题是如何以编程方式执行NetBIOS名称解析,最好是在C#中.我可以使用PInvoke.

UDAPTE

Tridus是对的.我可以使用System.Net.Dns.GetHostAddresses("hostname")来解析NetBIOS名称.我用反射器看看引擎盖下发生了什么.它从ws2_32.dll调用gethostbyname()

在这里,它解释了gethostbyname()将执行NetBIOS名称解析.

  1. 检查本地主机名是否匹配名称.
  2. 检查Hosts文件以查找匹配的名称条目.
  3. 如果配置了DNS服务器,请进行查询.
  4. 如果未找到匹配项,请尝试NetBIOS名称解析.

关于此链接中不支持的NetBIOS之谜,我认为这只是意味着不支持API. ServerFault中的人认为Windows 7仍然支持NetBIOS.

Tri*_*dus 5

可能不支持NetBIOS本身作为旧协议,但SMB/CIFS仍然是,这就是文件共享的\ hostname的原因,这仍然有效.

至于如何解析名称,我能够做到这一点:

System.Net.Dns.GetHostAddresses( "主机名")

我在一个域上,所以它可能只是附加一个DNS后缀并进行DNS查找,但它对我有用.试试看.:)