Comment déterminez-vous si une interface est un port LAN physique sur un PC Windows?

Je cherche une méthode pour déterminer avec précision si une interface est le port physique 802.3 ethernet sur un PC dans Windows.

En utilisant ipconfig / all je peux lister toutes les interfaces, et quand je fais ceci sur mon pc plusieurs entrées peuvent être listées ici y compris VPN, Bluetooth, Wifi et l’interface Ethernet physique.

Je cherche quelque chose comme “isPhysical (interface)”. (Il est correct d’avoir plusieurs ports LAN physiques, je veux juste savoir si c’est un port physique ou non).

METTRE À JOUR:

Jay et Chris merci!

(Pas assez d’espace dans les commentaires, donc je posterai ici)

Je cherche actuellement à utiliser WMI Win32_NetworkAdapter. Cependant, il affiche 4 interfaces avec AdapterType = “Ethernet 802.3”.

Je n’ai qu’un port physique sur mon PC, les autres portent le nom “Pilote de services réseau de machines virtuelles”. (Je suppose que ceux-ci sont installés par mon entreprise pour des raisons néfastes)

J’ai trouvé l’atsortingbut dont j’ai besoin dans l’interface, mais ce n’est pas disponible dans WinXP !!!

PhysicalAdapter Type de données: booléen Type d’access: Lecture seule

Indique si l’adaptateur est un adaptateur physique ou logique. Si la valeur est True, l’adaptateur est physique. Windows Server 2003, Windows XP, Windows 2000 et Windows NT 4.0: cette propriété n’est pas disponible.

Existe-t-il un moyen de déterminer s’il s’agit d’un port physique, autre qu’un filtre de texte pour le mot “virtuel” dans le nom?

MISE À JOUR 12/08

On dirait que les interfaces virtuelles sont ajoutées lorsque vous avez installé une machine virtuelle.

Voici quelques détails sur l’adaptateur virtuel: http://blogs.msdn.com/virtual_pc_guy/archive/2005/04/01/404816.aspx

Vous avez rencontré un problème où, si l’utilisateur ne dispose pas de droits d’administrateur, l’interface WMI ne renvoie pas les données nécessaires. Donc, en regardant maintenant la méthode GetAdapterInfo. Cependant, il semble append «pilote de services de machine virtuelle» à la description de l’adaptateur réel, rendant la vérification de texte «virtuelle» non valide.

Et la structure renvoyée par GetAdapterInfo:

http://msdn.microsoft.com/en-us/library/aa366062(VS.85).aspx

Appelez GetIfEntry et recherchez un type dwType de IF_TYPE_ETHERNET_CSMACD dans la structure MIB_IFROW renvoyée.

Ou, dans .NET, recherchez une System.Net.NetworkInformation.NetworkInterface avec un NetworkInterfaceType Ethernet.

Le meilleur moyen que j’ai vu jusqu’ici avec n’importe quel système Windows 2000 SP2 est d’utiliser WMI.

http://msdn.microsoft.com/en-us/library/aa394582(VS.85).aspx

Win32_NetworkAdapter http://msdn.microsoft.com/en-us/library/aa394216(VS.85).aspx

Et vous pouvez utiliser l’espace de noms System.Net.NetworkInformation Jay mentionné. Voici un lien sur la détection des cartes réseau connectées ou déconnectées:

http://felizk.dk/?p=43

Si une machine a deux cartes réseau, comment allez-vous choisir la bonne? La seule façon dont j’ai vu cela est de donner à l’utilisateur une liste déroulante avec l’adresse IP de chaque interface. Voir Wireshark pour un exemple –

S’il y a d’autres solutions, j’aimerais les entendre –

Vérifiez l’interface via: Appelez GetIfEntry et recherchez un type dwType IF_TYPE_ETHERNET_CSMACD dans la structure MIB_IFROW renvoyée.

Ou, dans .NET, recherchez une System.Net.NetworkInformation.NetworkInterface avec un NetworkInterfaceType Ethernet.

Et vérifiez si le nom contient le texte “Virtual”.

— Cela semble être un moyen boiteux de vérifier, mais jusqu’à présent, c’est la seule méthode que je vois pour ignorer ces adaptateurs 802.3 virtuels.

Je ne suis pas sûr de la réponse – mais sachez qu’il est possible d’avoir plusieurs interfaces Ethernet.