gpt4 book ai didi

python:如何从 HKLM 中删除注册表项(和子项)(出现错误 5)

转载 作者:行者123 更新时间:2023-11-28 17:26:48 25 4
gpt4 key购买 nike

我正在尝试通过 python 脚本删除某些注册表项。
我从“HKEY_CURRENT_USER”中读取和删除 key 没有问题,但是尝试从“HKEY_LOCAL_MACHINE”中执行相同的操作时,给我带来了可怕的WindowsError: [Error 5] Access is denied
我正在通过 IDLE IDE 以管理员权限运行脚本。
这是代码:

from _winreg import *    
ConnectRegistry(None,HKEY_LOCAL_MACHINE)
OpenKey(HKEY_LOCAL_MACHINE,r'software\wow6432node\App',0,KEY_ALL_ACCESS)
DeleteKey(OpenKey(HKEY_LOCAL_MACHINE,r'software\wow6432node'),'App')

最佳答案

在删除 key 之前,您需要删除所有子 key 。

def deleteSubkey(key0, key1, key2=""):
import _winreg
if key2=="":
currentkey = key1
else:
currentkey = key1+ "\\" +key2

open_key = _winreg.OpenKey(key0, currentkey ,0,_winreg.KEY_ALL_ACCESS)
infokey = _winreg.QueryInfoKey(open_key)
for x in range(0, infokey[0]):
#NOTE:: This code is to delete the key and all subkeys.
# If you just want to walk through them, then
# you should pass x to EnumKey. subkey = _winreg.EnumKey(open_key, x)
# Deleting the subkey will change the SubKey count used by EnumKey.
# We must always pass 0 to EnumKey so we
# always get back the new first SubKey.
subkey = _winreg.EnumKey(open_key, 0)
try:
_winreg.DeleteKey(open_key, subkey)
print "Removed %s\\%s " % ( currentkey, subkey)
except:
deleteSubkey( key0, currentkey, subkey )
# no extra delete here since each call
#to deleteSubkey will try to delete itself when its empty.

_winreg.DeleteKey(open_key,"")
open_key.Close()
print "Removed %s" % (currentkey)
return

这里是你如何运行它:

deleteSubkey(_winreg.HKEY_CURRENT_USER, "software\\wow6432node", "App")
deleteSubkey(_winreg.HKEY_CURRENT_USER, "software\\wow6432node\\App")

关于python:如何从 HKLM 中删除注册表项(和子项)(出现错误 5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com