1. 程式人生 > 程式設計 >python實現查詢所有程式的安裝資訊

python實現查詢所有程式的安裝資訊

如題,答案是:通過登錄檔查詢。

windows系統中有兩支子健儲存有所有程式的安裝資訊:

1,HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store

python實現查詢所有程式的安裝資訊

以下是查詢360瀏覽器安裝路徑的python程式碼示例:

import win32con,win32api

def find_360se_path(): 
 upper_keyword = '360SE.EXE' 
 path = None 
 sub_key = r'Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store' 
 key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,sub_key,win32con.KEY_READ) 
 info = win32api.RegQueryInfoKey(key) 
 for i in range(0,info[1]):  
  value = win32api.RegEnumValue(key,i)  
  if value[0].upper().endswith(upper_keyword):
   path = value[0]   
   break 
 win32api.RegCloseKey(key) 
 return path

2,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

python實現查詢所有程式的安裝資訊

以下是查詢360瀏覽器安裝路徑的python程式碼示例:

import win32con,win32apidef 

find_360se_path(): 
 upper_value_keyword = '360SE.EXE' 
 upper_item_name_keyword = '360SE6.EXE' 
 path = None 
 sub_key1 = r'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths' 
 key1 = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,sub_key1,win32con.KEY_READ) 
 info1 = win32api.RegQueryInfoKey(key1) 
 for i in range(0,info1[0]):  
  key_name = win32api.RegEnumKey(key1,i)  
  if key_name.upper() == upper_item_name_keyword:
   sub_key2 = sub_key1 + '\\' + key_name
   key2 = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,sub_key2,win32con.KEY_READ)   
   info2 = win32api.RegQueryInfoKey(key2)   
   for j in range(0,info2[1]):    
    key_value = win32api.RegEnumValue(key2,j)[1]
    if key_value.upper().endswith(upper_value_keyword): 
     path = key_value     
     break   
   win32api.RegCloseKey(key2)   
  break 
 win32api.RegCloseKey(key1) 
 return path