python 獲取已安裝軟件列表並找出要求安裝但為安裝的軟件名子


需求:查看Windows是否安裝了要求安裝的軟件

#encoding:utf-8
import winreg
import os
import ctypes, sys

#要求安裝的
expec_soft = []
#已經安裝要求的
installed_soft = []

def is_admin():
    try:
        #print(ctypes.windll.shell32.IsUserAnAdmin())
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

def query_soft_list():
    sub_key = [r'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall', r'SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall']
    
    software_name = []
    
    for i in sub_key:
        key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, i, 0, winreg.KEY_ALL_ACCESS)
        for j in range(0, winreg.QueryInfoKey(key)[0]-1):
            try:
                key_name = winreg.EnumKey(key, j)
                key_path = i + '\\' + key_name
                each_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path, 0, winreg.KEY_ALL_ACCESS)
                DisplayName, REG_SZ = winreg.QueryValueEx(each_key, 'DisplayName')
                DisplayName = DisplayName
                software_name.append(DisplayName)
            except WindowsError:
                pass
    
    #去重排序
    software_name = list(set(software_name))
    software_name = sorted(software_name)

    #讀要求安裝的軟件
    if not os.path.exists('必須安裝.txt'):
        with open('error.txt','w') as f:
            f.write('請創建<必須安裝.txt>')
            sys.exit(1) 

    with open('必須安裝.txt','r') as f:
        rs = f.readlines()

    for rss in rs:
        expec_soft.append(rss.strip("\r\n"))

    for rsss in expec_soft:
        print(rsss)
    #打印符合要求的已安裝軟件
    for soft1 in expec_soft:
        if soft1 in software_name:
            installed_soft.append(soft1.strip('\r\n'))

    for inst in installed_soft:
        print(inst)
        with open ('已安裝.txt','a') as f:
            f.write(inst)
            f.write('\n')

    #將安裝的所有軟件寫入文檔
    for soft in software_name:
        print(soft)
        with open('program_list.txt','a') as f:
            f.write(soft)
            f.write('\n')


if __name__ == "__main__":
    if is_admin():
        query_soft_list()
        puase = input('按回車退出....')
    else:
        print('單擊右鍵以管理員身份運行....')
        puase = input('按回車退出....')
        sys.exit(1)
   
    







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM