Guest User

Untitled

a guest
May 30th, 2013
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.09 KB | None | 0 0
  1. import _winreg
  2. import os
  3.  
  4. def walkRegistry(regkey, keyToSet="file_locations", valueToSet="temp_dir",
  5.                   HKEY=_winreg.HKEY_CURRENT_USER, verbose=False):
  6.     """Recursively search the Windows registry, starting at top <regkey>.
  7.    Return a list of three tuples that contain the registry key, the value
  8.    and the associated data"""
  9.     if verbose:
  10.         print regkey
  11.     i = 0
  12.     aReg = _winreg.OpenKey(HKEY, regkey)
  13.     try:
  14.         while True:
  15.             key = _winreg.EnumKey(aReg, i)
  16.             i += 1
  17.             if key:
  18.                 new_regkey = os.path.join(regkey, key)
  19.                 if key == keyToSet:
  20.                     if verbose:
  21.                         print "---> FOUND!!", new_regkey, key, keyToSet, valueToSet
  22.                     with _winreg.OpenKey(HKEY, new_regkey) as anotherReg:
  23.                         value_data = _winreg.QueryValueEx(anotherReg, valueToSet)[0]
  24.                     yield new_regkey, valueToSet, value_data
  25.                 for x in walkRegistry(new_regkey, keyToSet, valueToSet, HKEY, verbose):
  26.                     yield x
  27.     except WindowsError:
  28.         pass
  29.  
  30. def setRegistry(regkey, value, data, HKEY=_winreg.HKEY_CURRENT_USER):
  31.     """Set <value> (subkey) of <regkey> with <data>"""
  32.     hkey = [item for item in dir(_winreg) if getattr(_winreg, item) == HKEY][0]
  33.     print "setting value '%s' with data '%s' in regkey\n'%s\\%s'\n" % \
  34.           (value, data, hkey, regkey)
  35.     try:
  36.         aReg = _winreg.OpenKey(HKEY, regkey, 0, _winreg.KEY_ALL_ACCESS)
  37.     except:
  38.         aReg = _winreg.CreateKey(HKEY, regkey)
  39.     try:
  40.         _winreg.SetValueEx(aReg, value, 0, _winreg.REG_SZ, data)
  41.     finally:
  42.         _winreg.CloseKey(aReg)
  43.  
  44. if __name__ == "__main__":
  45.     regkey = u"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"
  46.     args = regkey, u"Shell Folders", u"Cookies"
  47.     regdata = [(regkey, value, data) for regkey, value, data in walkRegistry(*args)]
  48.     if len(regdata) == 1:
  49.         regkey, value, existing_data = regdata[0]
  50.         new_data = os.getenv("temp")
  51.         setRegistry(regkey, value, new_data)
Advertisement
Add Comment
Please, Sign In to add comment