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