C# 在Windows 7上解析NetBIOS名称

C# 在Windows 7上解析NetBIOS名称,c#,windows,protocols,netbios,C#,Windows,Protocols,Netbios,据此,从Windwos Vista开始,不再支持NetBIOS。果然,我再也看不到网络属性中的任何NetBIOS名称了 然而,当我在Windows7上编写代码时,我仍然在许多地方遇到NetBIOS名称。比如说 我仍然可以使用“MYDOMAIN\Harvey”登录我的计算机,我相信MYDOMAIN是一个NetBIOS名称 环境变量COMPUTERNAME和USERDOMAIN仍然是NetBIOS名称。我期待在这里看到一个DNS名称 我的SQL Server Management Studio中出现

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

然而,当我在Windows7上编写代码时,我仍然在许多地方遇到NetBIOS名称。比如说

  • 我仍然可以使用“MYDOMAIN\Harvey”登录我的计算机,我相信MYDOMAIN是一个NetBIOS名称
  • 环境变量COMPUTERNAME和USERDOMAIN仍然是NetBIOS名称。我期待在这里看到一个DNS名称
  • 我的SQL Server Management Studio中出现的SQL Server实例名称仍然类似于MYMACHINE\Instance1
  • 我猜微软仍然保留了它的一些部分以实现向后兼容性。我想了解Windows 7如何将NetBIOS名称解析为IP地址。我发现这篇文章解释了如何工作,但我担心这在Windows7中不再适用。至少我没有WINS服务器

    我的最后一个问题是如何以编程方式解析NetBIOS名称,最好是用C#。我可以用平沃克

    UDAPTE

    特里德斯是对的。我可以使用System.Net.Dns.GetHostAddresses(“主机名”)解析NetBIOS名称。我用反光镜看引擎盖下发生了什么。它在呼叫

    ,它解释了gethostbyname()将执行NetBIOS名称解析

  • 检查本地主机名是否有匹配的名称
  • 检查主机文件中是否有匹配的名称条目
  • 如果配置了DNS服务器,请查询它
  • 如果未找到匹配项,请尝试NetBIOS名称解析

  • 关于NetBIOS不受支持的秘密,我认为这只是意味着API不受支持。认为NetBIOS在Windows 7中仍然受支持。

    NetBIOS本身可能不受支持,但SMB/CIFS仍然受支持,这就是为什么\hostname用于文件共享和此类仍然有效

    至于如何解析名称,我可以这样做:

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


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

    我怀疑如果是服务器故障,您可能会在这方面得到更多的关注。@bryanbcook记住最后一行,我怀疑情况可能并非如此。:-)@Harvey Kwok-您的目标是根据计算机名确定本地网络上计算机的IP地址?命名管道也使用netbios名称。它们同时存在于Windows API和.NET库中。@Justin是的,我试图找到一种方法将NetBIOS名称解析为Windows 7上的IP地址,然后发现Windows 7上不再支持NetBIOS