python - How to get meaningful network interface names instead of GUIDs with netifaces under Windows? -


i use netifaces module.

import netifaces print netifaces.interfaces() 

but shows result below:

 ['{cdc97813-cc28-4260-ba1e-f0ce3081dec7}',  '{846ee342-7039-11de-9d20-806e6f6e6963}',  '{a51ba5f0-738b-4405-975f-44e67383513f}',  '{a646fa85-2ec6-4e57-996e-96e1b1c5cd59}', '{b5dc7787-26dc-4540-8424-a1d5598dc175}'] 

i want "friendly" interface name "local area connection" in windows.

how can that?

it looks netifaces leaves pull information out of windows registry. following functions work me under python 3.4 on windows 8.1.

to connection name ...

import netifaces ni import winreg wr pprint import pprint  def get_connection_name_from_guid(iface_guids):     iface_names = ['(unknown)' in range(len(iface_guids))]     reg = wr.connectregistry(none, wr.hkey_local_machine)     reg_key = wr.openkey(reg, r'system\currentcontrolset\control\network\{4d36e972-e325-11ce-bfc1-08002be10318}')     in range(len(iface_guids)):         try:             reg_subkey = wr.openkey(reg_key, iface_guids[i] + r'\connection')             iface_names[i] = wr.queryvalueex(reg_subkey, 'name')[0]         except filenotfounderror:             pass     return iface_names  x = ni.interfaces() pprint(get_connection_name_from_guid(x)) 

.. on machine produces:

['local area connection* 12',  'bluetooth network connection',  'wi-fi',  'ethernet',  'virtualbox host-only network',  '(unknown)',  'isatap.{4e4150b0-643b-42ea-aeea-a14fbd6b1844}',  'isatap.{bb05d283-4cbf-4514-b76c-7b7ebb2fc85b}'] 

to driver name ...

import netifaces ni import winreg wr pprint import pprint  def get_driver_name_from_guid(iface_guids):     iface_names = ['(unknown)' in range(len(iface_guids))]     reg = wr.connectregistry(none, wr.hkey_local_machine)     reg_key = wr.openkey(reg, r'system\currentcontrolset\control\class\{4d36e972-e325-11ce-bfc1-08002be10318}')     in range(wr.queryinfokey(reg_key)[0]):         subkey_name = wr.enumkey(reg_key, i)         try:             reg_subkey = wr.openkey(reg_key, subkey_name)             guid = wr.queryvalueex(reg_subkey, 'netcfginstanceid')[0]             try:                 idx = iface_guids.index(guid)                 iface_names[idx] = wr.queryvalueex(reg_subkey, 'driverdesc')[0]             except valueerror:                 pass         except permissionerror:             pass     return iface_names  x = ni.interfaces() pprint(get_driver_name_from_guid(x)) 

... gives me:

['microsoft wi-fi direct virtual adapter',  'bluetooth device (personal area network)',  'dell wireless 1395 wlan mini-card',  'broadcom 440x 10/100 integrated controller',  'virtualbox host-only ethernet adapter',  '(unknown)',  'microsoft isatap adapter',  'microsoft isatap adapter']