def test_long_key(self): from winreg import (HKEY_CURRENT_USER, KEY_ALL_ACCESS, CreateKey, SetValue, EnumKey, REG_SZ, QueryInfoKey, OpenKey, DeleteKey) name = 'x' * 256 try: with CreateKey(HKEY_CURRENT_USER, self.test_key_name) as key: SetValue(key, name, REG_SZ, 'x') num_subkeys, num_values, t = QueryInfoKey(key) EnumKey(key, 0) finally: with OpenKey(HKEY_CURRENT_USER, self.test_key_name, 0, KEY_ALL_ACCESS) as key: DeleteKey(key, name) DeleteKey(HKEY_CURRENT_USER, self.test_key_name)
def delete_key( self, name: str, key_wow64_32key: bool = False, ) -> None: parental, key_name = name.rsplit(sep="\\", maxsplit=1) handle = self._get_handler(parental, KEY_WRITE, key_wow64_32key) DeleteKey(handle, key_name)
def test_delete(self): from winreg import OpenKey, KEY_ALL_ACCESS, DeleteValue, DeleteKey key = OpenKey(self.root_key, self.test_key_name, 0, KEY_ALL_ACCESS) sub_key = OpenKey(key, "sub_key", 0, KEY_ALL_ACCESS) for name, value, type in self.test_data: DeleteValue(sub_key, name) DeleteKey(key, "sub_key")
def test_delete(self): # must be run after test_SetValueEx from winreg import OpenKey, KEY_ALL_ACCESS, DeleteValue, DeleteKey key = OpenKey(self.root_key, self.test_key_name, 0, KEY_ALL_ACCESS) sub_key = OpenKey(key, "sub_key", 0, KEY_ALL_ACCESS) for name, value, type in self.test_data: DeleteValue(sub_key, name) # cannot wrap a memoryview in setup_class for test_data DeleteValue(sub_key, 'test_name') DeleteKey(key, "sub_key")
def test_named_arguments(self): from winreg import KEY_ALL_ACCESS, CreateKeyEx, DeleteKey, OpenKeyEx with CreateKeyEx(key=self.root_key, sub_key=self.test_key_name, reserved=0, access=KEY_ALL_ACCESS) as ckey: assert ckey.handle != 0 with OpenKeyEx(key=self.root_key, sub_key=self.test_key_name, reserved=0, access=KEY_ALL_ACCESS) as okey: assert okey.handle != 0 DeleteKey(self.root_key, self.test_key_name)
def delete_registry_tree(root, subkey): try: hkey = OpenKey(root, subkey, access=KEY_ALL_ACCESS) except OSError: return while True: try: subsubkey = EnumKey(hkey, 0) except OSError: break delete_registry_tree(hkey, subsubkey) CloseKey(hkey) DeleteKey(root, subkey)
def _delete_sub_key(root_key: int, current_key: str, arch: int) -> NoReturn: open_key = OpenKey(root_key, current_key, 0, KEY_ALL_ACCESS | arch) info_key = QueryInfoKey(open_key) for _ in range(0, info_key[0]): # NOTE:: This code is to delete the key and all sub_keys. # If you just want to walk through them, then # you should pass x to EnumKey. sub_key = EnumKey(open_key, x) # Deleting the sub_key will change the sub_key count used by EnumKey. # We must always pass 0 to EnumKey so we # always get back the new first sub_key. sub_key = EnumKey(open_key, 0) try: DeleteKey(open_key, sub_key) except OSError: _delete_sub_key(root_key, "\\".join([current_key, sub_key]), arch) # No extra delete here since each call # to delete_sub_key will try to delete itself when its empty. DeleteKey(open_key, "") open_key.Close() return
def delPersistance(name): k = 'Software\Microsoft\Windows\CurrentVersion\Run' # open the key in register key = OpenKey(HKEY_CURRENT_USER, k, 0, KEY_ALL_ACCESS) # open the subkey subKey = OpenKey(key, name, 0, KEY_ALL_ACCESS) # remove the keys in the register DeleteKey(key, subKey) # print(EnumKey(key, 0)) # close key and sub key key.Close() subKey.Close() print("The %s in /HKCU/%s is removed of the Register." % (name, k))
def Registrar(Action='get', RegPath='', RegName='', RegValue=''): try: ClassDict = {'HKEY_CURRENT_USER': HKEY_CURRENT_USER} mainkey = RegPath.split('\\')[0] RegRelativePath = RegPath.replace(mainkey + '\\', '') with OpenKey(ClassDict[mainkey], RegRelativePath, 0, KEY_ALL_ACCESS) as key: if Action == 'get': value = QueryValueEx(key, RegName)[0] return (value) elif Action == 'set': SetValueEx(key, RegName, 0, REG_SZ, RegValue) if QueryValueEx(key, RegName)[0]: return (True) else: return (False) elif Action == 'setkey': CreateKey(ClassDict[mainkey], join(RegRelativePath, RegName)) elif Action == 'rmvalue': DeleteValue(key, RegName) elif Action == 'rmkey': DeleteKey(ClassDict[mainkey], join(RegRelativePath, RegName)) except FileNotFoundError as regerr: pass