키를 삭제하기 전에 모든 하위 키를 제거해야합니다. 여기
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")
당신은 동일한 사용자로부터'regedit'를 사용하여 해당 키를 삭제할 수 있습니까? – cdarke
@cdarke - 예. 'regedit'을 열면 admin으로 실행됩니다 (UAC 대화 상자가 나타납니다). 원하는 키로 이동하여 삭제할 수 있으며 하위 키와 함께 삭제할 수 있습니다. 스크립트의 문제는 'software \ wow6432node \ App'에 추가 하위 키가 포함되어 있기 때문에 실패 할 수 있습니다. –