利用Python Winreg模块读取网络(含无线网络)信息
本代码更加的自动化,此前有人写代码在遍历Key的时候,是手动指定range(0,100)做循环,这种是存在问题的,因为并不清楚机器上具体存储有多少个网络信息,包括对每个网络下的Key值的获取,我通过捕捉异常来实现自动化的遍历。
import winreg import sys def get_network_info(): unmanaged_networks = r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged' try: key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,unmanaged_networks) try: i=0 #i为注册表中unmanaged下面的网络的索引 while True: guid = winreg.EnumKey(key, i) #guid每个网络的ID,就是注册表中一长串字符串, EnumKey就是列举出本机器上所有的网络 # print("guid", guid) netkey = winreg.OpenKey(key, str(guid)) # print("netkey", netkey) try: j = 0 #开始查询每个网络下有具体的哪些字段 while True: value_name, value_data,value_type = winreg.EnumValue(netkey,j) #查看帮助文档,Enumvalue返回元组 # print(value_name, value_data, value_type) if value_name == "Description": #这个key对应的值是网络名称 print(value_data) if value_name == 'DefaultGatewayMac': #这个Key对应的是默认网关名称 print(value_data) j +=1 except: pass i +=1 except: pass except Exception as e: print(e) sys.exit() get_network_info()
STRIVE FOR PROGRESS,NOT FOR PERFECTION