利用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()

 

posted @ 2022-05-20 12:30  Jason_huawen  阅读(180)  评论(0编辑  收藏  举报