def delete_key(hkey, path, key, reflection=True): ''' Delete a registry key Note: This cannot delete a key with subkeys CLI Example: .. code-block:: bash salt '*' reg.delete_key HKEY_CURRENT_USER 'SOFTWARE\\Salt' 'version' ''' registry = Registry() hkey2 = getattr(registry, hkey) access_mask = registry.reflection_mask[reflection] try: handle = _winreg.OpenKey(hkey2, path, 0, access_mask) _winreg.DeleteKeyEx(handle, key) _winreg.CloseKey(handle) return True except Exception: pass try: _winreg.DeleteValue(handle, key) _winreg.CloseKey(handle) return True except Exception: _winreg.CloseKey(handle) return False
def delete_value(hive, key, vname=None, use_32bit_registry=False): ''' Delete a registry value entry or the default value for a key. :param str hive: The name of the hive. Can be one of the following - HKEY_LOCAL_MACHINE or HKLM - HKEY_CURRENT_USER or HKCU - HKEY_USER or HKU :param str key: The key (looks like a path) to the value name. :param str vname: The value name. These are the individual name/data pairs under the key. If not passed, the key (Default) value will be deleted. :param bool use_32bit_registry: Deletes the 32bit portion of the registry on 64bit installations. On 32bit machines this is ignored. :return: Returns True if successful, False if not :rtype: bool CLI Example: .. code-block:: bash salt '*' reg.delete_value HKEY_CURRENT_USER 'SOFTWARE\\Salt' 'version' ''' if PY2: local_hive = _mbcs_to_unicode(hive) local_key = _unicode_to_mbcs(key) local_vname = _unicode_to_mbcs(vname) else: local_hive = hive local_key = key local_vname = vname registry = Registry() hkey = registry.hkeys[local_hive] access_mask = registry.registry_32[ use_32bit_registry] | _winreg.KEY_ALL_ACCESS try: handle = _winreg.OpenKey(hkey, local_key, 0, access_mask) _winreg.DeleteValue(handle, local_vname) _winreg.CloseKey(handle) broadcast_change() return True except WindowsError as exc: # pylint: disable=E0602 log.error(exc, exc_info=True) log.error('Hive: {0}'.format(local_hive)) log.error('Key: {0}'.format(local_key)) log.error('ValueName: {0}'.format(local_vname)) log.error('32bit Reg: {0}'.format(use_32bit_registry)) return False
def delete_value(hive, key, vname=None, reflection=True, use_32bit_registry=False): ''' Delete a registry value entry or the default value for a key. :param str hive: The name of the hive. Can be one of the following - HKEY_LOCAL_MACHINE or HKLM - HKEY_CURRENT_USER or HKCU - HKEY_USER or HKU :param str key: The key (looks like a path) to the value name. :param str vname: The value name. These are the individual name/data pairs under the key. If not passed, the key (Default) value will be deleted. :param bool reflection: A boolean value indicating that the value should also be set in the Wow6432Node portion of the registry. Only applies to 64 bit Windows. This setting is ignored for 32 bit Windows. .. deprecated:: 2015.8.2 Use ``use_32bit_registry`` instead. The parameter seems to have no effect since Windows 7 / Windows 2008R2 removed support for reflection. This parameter will be removed in Boron. :return: Returns True if successful, False if not :rtype: bool CLI Example: .. code-block:: bash salt '*' reg.delete_value HKEY_CURRENT_USER 'SOFTWARE\\Salt' 'version' ''' registry = Registry() hive = registry.hkeys[hive] access_mask = registry.registry_32[use_32bit_registry] try: handle = _winreg.OpenKey(hive, key, 0, access_mask) _winreg.DeleteValue(handle, vname) _winreg.CloseKey(handle) return True except WindowsError as exc: # pylint: disable=E0602 log.error(exc, exc_info=True) return False
def delete_value(hive, key, vname=None, reflection=True): ''' Deletes a registry value. :param hive: string The name of the hive. Can be one of the following - HKEY_LOCAL_MACHINE or HKLM - HKEY_CURRENT_USER or HKCU - HKEY_USER or HKU :param key: string The key (looks like a path) to the value name. :param vname: string The value name. These are the individual name/data pairs under the key. If not passed, the key (Default) value will be deleted. :param reflection: boolean A boolean value indicating that the value should also be set in the Wow6432Node portion of the registry. Only applies to 64 bit Windows. This setting is ignored for 32 bit Windows. :return: boolean Returns True if successful, False if not CLI Example: .. code-block:: bash salt '*' reg.delete_value HKEY_CURRENT_USER 'SOFTWARE\\Salt' 'version' ''' registry = Registry() hive = registry.hkeys[hive] access_mask = registry.reflection_mask[reflection] try: handle = _winreg.OpenKey(hive, key, 0, access_mask) _winreg.DeleteValue(handle, vname) _winreg.CloseKey(handle) return True except WindowsError as exc: # pylint: disable=E0602 _winreg.CloseKey(handle) log.error(exc) return False