python操作注册表

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下运行。

发布了7 篇原创文章 · 获赞 0 · 访问量 220

猜你喜欢

转载自blog.csdn.net/weixin_45903952/article/details/104070804