Search code examples
c#command-linenetsh

How to get default NIC Connection Name


IMPORTANT EDIT: Back again on this subject. As you said there should be no default NIC, I'm trying to understand if there is a way to detect all the NICs that are actually connected.

Having the MAC address of my physical interface is there a programmatic way to get interface name/interface status/etc...

For example, my XP machine:

Device Realtek RTL8139 Family PCI Fast Ethernet NIC MAC XXXX-XXXX-XXXX

XXXX-XXXX-XXXX is what I know

Through this device I connect using "Local Area Connection" connection (with all the info related as gateway, subnet, ...)

So I'm searching for the link between XXXX-XXXX-XXXX and Local Area Connection.

Hope everything is clear now.

Thanks all! P.S. Sorry for the delay... +1 vote to all, for patience!


Old question


Hi all, I'd like to change the IP of "Local Area Connection" by using the command netsh.

My issue is is there a programmatic way to get the default connection name (i.e. exactly "Local Area Connection")?

Thanks

EDIT: I don't need the list of all the connection names but only the default one. Accessing the registry I get the list and it seems that the default is marked with a *. Unfortunately, printing them on a console I get kind of 10 different "Local Area Connection" like...

Local Area Connection* 13
6TO4 Adapter
VMware Network Adapter VMnet1
Wireless Network Connection 2
Reusable ISATAP Interface {483968F2-DBF9-4596-B8BE-725FAAB89F93}
Local Area Connection* 3
Local Area Connection* 2
Reusable Microsoft 6To4 Adapter
Local Area Connection* 7
VMware Network Adapter VMnet8
Local Area Connection* 8
isatap.replynet.prv
Local Area Connection* 9
Local Area Connection* 12
isatap.{FAA80CE0-D641-408A-83F8-5F9C394FFD76}
Bluetooth Network Connection
Local Area Connection* 4
isatap.{40156BF9-6599-4912-A315-62DE5342B452}
isatap.{7651F2F5-4888-4258-92C5-6822C506D726}
Local Area Connection* 5
isatap.{34F5F074-8AA7-4421-AE24-131BA2DC3458}
Local Area Connection*
Local Area Connection* 10
Local Area Connection
Local Area Connection* 6
Wireless Network Connection

and so on...

EDIT2: @ho1 running your code changing FriendlyName that doesn't exists with Name you'll get something like the list behind, unfortunately it doesn't seem to be the output expected

0 - WAN Miniport (SSTP)
1 - WAN Miniport (IKEv2)
2 - WAN Miniport (L2TP)
3 - WAN Miniport (PPTP)
4 - WAN Miniport (PPPOE)
5 - WAN Miniport (IPv6)
6 - WAN Miniport (Network Monitor)
7 - Realtek RTL8168C(P)/8111C(P) Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)
8 - WAN Miniport (IP)
9 - Microsoft ISATAP Adapter
10 - RAS Async Adapter
11 - Broadcom 802.11g Network Adapter
12 - Microsoft 6to4 Adapter
13 - VMware Virtual Ethernet Adapter for VMnet1
14 - Microsoft ISATAP Adapter #3
15 - VMware Virtual Ethernet Adapter for VMnet8
16 - Microsoft ISATAP Adapter #2
17 - Microsoft ISATAP Adapter #4
18 - Microsoft Virtual WiFi Miniport Adapter
19 - Microsoft ISATAP Adapter #5
20 - Microsoft ISATAP Adapter
22 - Bluetooth Device (Personal Area Network)
23 - Microsoft 6to4 Adapter
24 - Microsoft 6to4 Adapter #3
25 - Microsoft 6to4 Adapter #2

Solution

  • This is a dirty way of doing it as it can be optimized by incorporating LINQ, etc

    using System.Net.NetworkInformation;
    
    List<NetworkInterface> Interfaces = new List<NetworkInterface>();
    foreach (var nic in NetworkInterface.GetAllNetworkInterfaces())
    {
        if (nic.OperationalStatus == OperationalStatus.Up)
        {
            Interfaces.Add(nic);
        }
    }
    
    
    NetworkInterface result = null;
    foreach (NetworkInterface nic in Interfaces)
    {
        if (result == null)
        {
            result = nic;
        }
        else
        {
            if (nic.GetIPProperties().GetIPv4Properties() != null)
            {
                if (nic.GetIPProperties().GetIPv4Properties().Index < result.GetIPProperties().GetIPv4Properties().Index)
                    result = nic;
            }
        }
    }
    
    Console.WriteLine(result.Name);
    

    you'll probably want to tailor your results by using the results from nic.GetIPProperties() and nic.GetIPProperties().GetIPv4Properties()