2009-10-15 83 views
3

我試圖找到一個系統的「主要IP地址是什麼」的神奇答案。我的研究已經確定的答案,「最佳」的意思是:如何確定Windows上使用.NET的網絡接口的綁定順序?

  1. 看[system.Net.NetworkInformation.NetworkInterface] :: GetAllNetworkInterfaces()用於分配的默認網關的接口。如果你只找到一個,那麼你就完成了。
  2. 如果存在多個路由表,則必須查看路由表中最低指標的路由表(查看0.0.0.0網絡條目)。
  3. 如果公制中的綁定匹配,則綁定順序最低的適配器將獲勝。

我的問題是:你如何確定使用.NET的綁定順序?我見過solution看着註冊表,這沒什麼,但我希望有一個更漂亮的界面。

PowerShell示例的加分,因爲這是我選擇的語言。 :)

+0

有這樣另一個線程已經http://stackoverflow.com/questions/567905/how-do-you-get-the-host-machines-primary-ip-address – Jaykul 2009-10-15 16:23:36

+0

我開始喜歡越來越多的註冊表方法... – halr9000 2009-10-15 18:07:16

+0

您的解決方案鏈接已死亡。 – ZeroBugBounce 2012-06-14 17:05:49

回答

2

就我個人而言,我看到註冊表解決方案更優雅,更可靠。該link you posted已經使用PowerShell的,所以它看起來像你一個完美的解決方案......


的替代,基於註冊表的解決方案exists here

+0

這個鏈接現在已經死了,順便說一句。 – ZeroBugBounce 2012-06-14 17:05:36

+0

@ZeroBugBounce剛剛添加了替代版本 – 2012-06-14 17:11:12

+0

更新的原始鏈接 – halr9000 2012-06-19 18:42:43

1

一個好的起點似乎是這個API方法:EnumBindingPaths,但它需要C++或C#/ VB + P /調用知識才能使用該方法及其幫助程序。在Microsoft KB article 894564中,建議使用這種方法和其他一些方法來查找或操縱綁定。該方法可能無法在Vista/W7上運行,但我不確定。

從API方法到PowerShell將會有一些工作要做。該方法本身可能在內部使用註冊表,並不確定它是否真的比當前的方法有優勢。

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 
相關問題