您需要刪除所有子項,然後才能刪除密鑰。
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'時,它以管理員身份運行(顯示UAC對話框)。我可以導航到所需的密鑰並刪除它,以及它的子密鑰。 也許這個腳本的問題在於它失敗,因爲'software \ wow6432node \ App'包含附加的子鍵。 –