How to identify if the Network Interface is LAN or

2019-02-25 17:48发布

I want to differentiate between the Ethernets available on my system. Whether that's a LAN , Wifi or something created by VMWare. I am only intrested for LAN.

But when I am enumerating with following code:

     NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
     foreach (NetworkInterface networkInterface in adapters)
     {

         Console.WriteLine("   {0}  ::: Interface Type {1} ::::ID {2}  \n", networkInterface.Name, networkInterface.NetworkInterfaceType, networkInterface.Id);
     }

Now how do I differentiate as NetworkInterface.Description and NetworkInterface.NetworkInterfaceType are not useful.

Any other ways around?

enter image description here

2条回答
相关推荐>>
2楼-- · 2019-02-25 18:04

Look at using WMI to retrieve more detailed information about network adapters on the system. It'll tell you whether or not a given adapter is a wired network adapter or wireless, and if it is indeed a 'physical' network adapter.

http://geekswithblogs.net/PsychoCoder/archive/2008/01/25/using_wmi_in_csharp.aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/aa394216(v=vs.85).aspx

查看更多
时光不老,我们不散
3楼-- · 2019-02-25 18:06

To find out if the adapter is a Wifi adapter you can use the MSNdis_PhysicalMediumType class in the root\WMI namespace.

Unfortunately the VMware adapters appear to Windows as if they are "real" physical adapters and have a MAC address and IP address etc so it's hard to differentiate those.

You'll notice in Windows if you run ncpa.cpl they all appear the same as physical adapters.

查看更多
登录 后发表回答