Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import _winreg
- import os
- global __debug__
- __debug__ = True
- def walkRegistry(regkey, keyToSearch="file_locations",
- valueNameToSearch="temp_dir", verbose=False):
- """Recursively search the Windows registry (HKEY_CURRENT_USER),
- starting at top <regkey>. Return a list of three tuples that contain
- the registry key, the value and the associated data"""
- if verbose:
- print regkey
- aReg = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, regkey)
- i, keys, founds = 0, [], []
- try:
- while True:
- i += 1
- key = _winreg.EnumKey(aReg, i)
- keys.append(key)
- if key == keyToSearch:
- keyx = os.path.join(regkey, key)
- aReg = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, keyx)
- data, type_ = _winreg.QueryValueEx(aReg, valueNameToSearch)
- founds.append((keyx, valueNameToSearch, data))
- except WindowsError:
- for key in keys:
- try:
- new_regkey = os.path.join(regkey, key)
- walkRegistry(new_regkey, keyToSearch,
- valueNameToSearch, verbose)
- except WindowsError:
- pass
- return founds
- def setRegistry(regkey, keyToSet, valueToSet, replacementData, verbose=False):
- """Search for <keyToSet> starting at top <regkey>. If <keyToSet> is found
- exactly once, replace registry data associated with <valueToSet> with
- <replacementData>."""
- founds = walkRegistry(regkey, keyToSet, valueToSet, verbose)
- if not founds:
- return
- elif len(founds) == 1:
- keyx, valueNameToSearch, data = founds[0]
- else:
- msg = "Registry value %r is found multiple times"
- raise ValueError(msg % valueToSet)
- if not __debug__:
- try:
- key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, keyx,
- 0, _winreg.KEY_ALL_ACCESS)
- except:
- key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, regkey)
- _winreg.SetValueEx(keyx, valueToSet, 0, _winreg.REG_SZ,
- replacementData)
- _winreg.CloseKey(keyx)
- regkey = u"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"
- print founds = walkRegistry(regkey, u"Shell Folders", u"Cookies", True)
- setRegistry(regkey, u"Shell Folders", u"Cookies", "this is the replacement value", False)
Advertisement
Add Comment
Please, Sign In to add comment