需求:查看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)