2012-01-02 42 views
1

如果網絡連接處於活動狀態,我需要讓它獨立。 我只需要撥號連接。如何獲取通過C#使用的默認網絡連接名稱?

在這張圖片中克拉羅是默認的網絡連接名稱。

enter image description here

不知道如何做到這一點。我希望這很清楚。提前致謝!

+0

你說的「默認」的網絡連接是什麼意思?我很確定,在Windows中,所有的網絡接口都是一樣的。 – 2012-01-02 02:15:46

+0

@ M.Babcock:看看我的更新,我添加一個圖像 – Jack 2012-01-02 02:22:43

+0

必須是撥號的東西。無論如何,如果網絡接口上實際上有一個屬性將其指定爲默認值,我敢打賭它可以通過WMI或原始註冊表設置進行訪問。 – 2012-01-02 02:44:18

回答

2

要找到當前選擇的用於連接到互聯網的默認連接,您需要閱讀註冊表項HKCU \ RemoteAccess InternetProfile can be set in a couple of ways。這將包含適配器的名稱。您可能需要使用DotRas

一旦這個下載,安裝,並在您的項目引用,您可以使用類似於下面的代碼:

// Get the default adapter 
string defaultAdapter = Registry.GetValue(@"HKEY_CURRENT_USER\RemoteAccess", "InternetProfile", "") as string; 

foreach (RasConnection connection in RasConnection.GetActiveConnections()) 
{ 
    if (connection.EntryName.Equals(defaultAdapter, StringComparison.InvariantCultureIgnoreCase)) 
    { 
     if (connection.GetConnectionStatus().ConnectionState == RasConnectionState.Connected) 
     { 
      // Do something 
     } 
    } 
    // Done searching 
    break; 
} 
+0

如果網絡連接不活躍,則問題是無效。 – Jack 2012-01-02 02:16:04

+0

@Jack:您可以查看所有適配器,如果沒有,請查看一個或多個其他狀態。您可能還想排除NetworkInterfaceType爲Tunnel或Loopback的適配器。 – 2012-01-02 02:19:52

+0

如果我嘗試使用DotRsa庫? – Jack 2012-01-02 02:27:40

0

這是什麼原因在哪裏找?

using System.Net.NetworkInformation; 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
      { 

       Console.WriteLine(nic.NetworkInterfaceType); 
       Console.WriteLine(nic.Name); 
      } 
     } 
    } 

,如果你發現什麼字串它把對NetworkInterfaceType與調制解調器,那麼你可以把if語句中有

+0

感謝您的回覆。之前有人回答,這個問題僅適用於活動連接。 – Jack 2012-01-02 12:47:47

相關問題