python操作注册表

因网友需要,需要对注册表内以****打头的项进行删除操作,利用python,实行一删到底。

#coding=gbk
import win32api
import win32con
# 打开项
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,
'SYSTEM\ControlSet001\Services',0, win32con.KEY_ALL_ACCESS)
chuan=input ("自定义删除表项中一致性字符串,默认为'tesxnginx': ")
if chuan=="":
chuan="tesxnginx"
lenchuan=len(chuan)
#print (chuan,len(chuan))
keysb1=(win32api.RegQueryInfoKey(key))[0] # RegQueryInfoKey函数查询项的基本信息
#(26, 7, 128178812229687500L) # 返回项的子项数目、项值数目,以及最后一次修改时间
result = False
print ("注册表中共有",keysb1,"个子项")
#print(win32api.RegEnumKey(key,0))
for i in range(keysb1,0,-1):
#若不进行try操作,如果test不存在的话会有异常
try:
if win32api.RegEnumKey(key,i-1) != '123465':
#print("第",i,"个子项,名称:",win32api.RegEnumKey(key,i-1),end="")
#print(win32api.RegEnumKey(key,i)[0:lenchuan])
if (win32api.RegEnumKey(key,i-1)[0:lenchuan]) == chuan:
print("第",i,"个子项,名称:",win32api.RegEnumKey(key,i-1),end="")
print (" 此项被删除!!")
win32api.RegDeleteKey(key,win32api.RegEnumKey(key,i-1))
#print ()
pass
else:
result = True
break
except:
pass #
keysb1=(win32api.RegQueryInfoKey(key))[0]
print ("\n操作后子项注册表中共有",keysb1,"个子项")
# for i in range(keysb1,0,-1):
# print("第",i,"个子项,名称:",win32api.RegEnumKey(key,i-1))
# keysb1=(win32api.RegQueryInfoKey(key))[0] # RegQueryInfoKey函数查询项的基本信息
# #(26, 7, 128178812229687500L) # 返回项的子项数目、项值数目,以及最后一次修改时间
# result = False
win32api.RegCloseKey(key)
input ()

可显示操作前后的子项数量。

可自定义删除前项的字符串。

win7下运行。