- 论坛徽章:
- 0
|
还是通过递归就可以做到,只是递归函数中删除语句的位置要放对
import _winreg
import re
#获取一个注册表键的所有子健
def SubKeys(Ob_S_key):
try:
i=0
L_SubKeys=[]
while 1:
Name=_winreg.EnumKey(Ob_S_key,i)
L_SubKeys.append(Name)
i+=1
except WindowsError:
return L_SubKeys
#删除主键和主键下的所有子健
def Del_SubKey(Ob_MasterKey,Str_SubKey):
try:
Ob_DS_Key=_winreg.OpenKey(Ob_MasterKey,Str_SubKey)
for sbkey in SubKeys(Ob_DS_Key):
Str_DS_SubKey=Str_SubKey+"\\"+sbkey
Del_SubKey(Ob_MasterKey,Str_DS_SubKey)
_winreg.DeleteKey(Ob_MasterKey,Str_SubKey)
except WindowsError:
pass
#递归获取一个主键下包含关键字的所有子健
def SearchSubkey(Ob_MasterKey,Str_SubKey,Keyname):
try:
Ob_SS_Key=_winreg.OpenKey(Ob_MasterKey,Str_SubKey)
for sk in SubKeys(Ob_SS_Key):
Str_SS_SubKey=Str_SubKey+"\\"+sk
if re.search(Keyname,sk,re.IGNORECASE):
print "Delete "+Str_SS_SubKey
Del_SubKey(Ob_MasterKey,Str_SS_SubKey)
else:
SearchSubkey(Ob_MasterKey,Str_SS_SubKey,Keyname)
except WindowsError:
pass
#获取根键下包含关键字的所有子健
def Search_KN_SubKey(Ob_MasterKey,Str_SubKey,Keyname):
Ob_SKS_Key=_winreg.OpenKey(Ob_MasterKey,Str_SubKey)
for Str_SKS_SubKey in SubKeys(Ob_SKS_Key):
SearchSubkey(Ob_MasterKey,Str_SKS_SubKey,Keyname)
#print Str_M_SubKey
#通过_winreg模块获取根键对象HKEY_LOCAL_MACHINE和HKEY_USERS,在windows系统中只有这两个根键被保存在硬盘中,其他根键要么是这两个根键的子健,要么就是volatile hive,当系统启动时在内存中创建。
Ob_M_MasterKey0=_winreg.HKEY_LOCAL_MACHINE
Ob_M_MasterKey1=_winreg.HKEY_USERS
#设置子健字符串为空,这样可以检索根键对象HKEY_LOCAL_MACHINE和HKEY_USERS下的所有子健
Str_M_SubKey=""
#设置检索子健的关键字,可以在list中追加多个关键字
L_Search_Keyname=['qq','360']
#根据关键字搜索注册表对应根键的所有子健,不区分大小写。
for Search_Keyname in L_Search_Keyname:
Search_KN_SubKey(Ob_M_MasterKey0,Str_M_SubKey,Search_Keyname)
Search_KN_SubKey(Ob_M_MasterKey1,Str_M_SubKey,Search_Keyname)
|
|