2

I want to be able to delete all the subkeys under a key but I keep getting the error

[WinError 2] The system cannot find the file specified

Here is the code I used from another answer (python: how to delete registry key (and subkeys) from HKLM (getting error 5)1) :

import winreg

def delete_sub_key(key0, current_key, arch_key=0):
    open_key = winreg.OpenKey(key0, current_key, 0, winreg.KEY_ALL_ACCESS)
    info_key = winreg.QueryInfoKey(open_key)
    for x in range(0, info_key[0]):
        # to delete the key and all sub_keys
        sub_key = winreg.EnumKey(open_key, 0)
        try:
            winreg.DeleteKey(open_key, sub_key)
            print("Removed %s\\%s " % (current_key, sub_key))
        except OSError:
            delete_sub_key(key0, "\\".join([current_key,sub_key]), arch_key)
            # No extra delete here since each call
            # to delete_sub_key will try to delete itself when its empty.
    winreg.DeleteKey(open_key, "")
    open_key.Close()
    print("Removed %s" % current_key)
    return

arch_keys = [winreg.KEY_WOW64_32KEY, winreg.KEY_WOW64_64KEY]
root = winreg.HKEY_LOCAL_MACHINE

# Key to delete
keys = 'Computer\\HKEY_LOCAL_MACHINE\\SOFTWARE\\BlueStacks'

for arch_key in arch_keys:
    try:
        delete_sub_key(root, keys, arch_key)
    except OSError as e:
        print(e)
Yoskutik
  • 1,859
  • 2
  • 17
  • 43
Lee Yerin
  • 37
  • 4

0 Answers0