繁体   English   中英

在Windows 7上解析NetBIOS名称

[英]Resolve NetBIOS name on Windows 7

根据此链接 ,从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。

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

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

System.Net.Dns.GetHostAddresses( “主机名”)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM