如何使用.NET确定Windows上网络接口的绑定顺序?

时间:2009-10-15 15:30:55

标签: .net networking powershell

我正试图找到系统“主要IP地址是什么”的神奇答案。我的研究已经确定“最佳”的答案意味着:

  1. 查看[system.Net.NetworkInformation.NetworkInterface] :: GetAllNetworkInterfaces(),了解分配了默认网关的接口。如果你只找到一个,那么你就完成了。
  2. 如果有多个,您必须查看具有最低指标的路由表(查看0.0.0.0网络条目)。
  3. 如果指标存在平局,则具有最低绑定顺序的适配器将获胜。
  4. 我的问题是:如何使用.NET确定绑定顺序?我看过solution查看注册表,这没关系,但我希望有一个更漂亮的界面。

    PowerShell示例的奖励积分,因为这是我选择的语言。 :)

3 个答案:

答案 0 :(得分:3)

就个人而言,我认为Registry解决方案更优雅,更可靠。 link you posted已使用PowerShell,因此它似乎是一个完美的解决方案......


另一种基于注册表的解决方案exists here

答案 1 :(得分:1)

一个好的起点似乎是这个API方法:EnumBindingPaths,但它需要C ++或C#/ VB + P / Invoke知识才能使用该方法及其帮助程序。在Microsoft KB article 894564中,建议使用此方法和其他一些方法来查找或操纵绑定。该方法可能无法在Vista / W7上运行,但我不确定。

从这个API方法到PowerShell将会有一些工作。该方法本身可能在内部使用注册表,不确定它是否真的优于您当前的方法。

答案 2 :(得分:0)

试试这个:

$IpAddress = (Test-Connection $env:computername -count 1).IPv4address.IPAddressToString

$NetworkAdapter = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter 'ipenabled = "true"'| where {$_.Ipaddress -contains $IpAddress}

$NetworkAdapter.properties| select -Property Name,Value