Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import _winreg
- import os
- def walkRegistry(regkey, keyToSet="file_locations", valueToSet="temp_dir",
- HKEY=_winreg.HKEY_CURRENT_USER, verbose=False):
- """Recursively search the Windows registry, 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
- i = 0
- aReg = _winreg.OpenKey(HKEY, regkey)
- try:
- while True:
- key = _winreg.EnumKey(aReg, i)
- i += 1
- if key:
- new_regkey = os.path.join(regkey, key)
- if key == keyToSet:
- if verbose:
- print "---> FOUND!!", new_regkey, key, keyToSet, valueToSet
- with _winreg.OpenKey(HKEY, new_regkey) as anotherReg:
- value_data = _winreg.QueryValueEx(anotherReg, valueToSet)[0]
- yield new_regkey, valueToSet, value_data
- for x in walkRegistry(new_regkey, keyToSet, valueToSet, HKEY, verbose):
- yield x
- except WindowsError:
- pass
- def setRegistry(regkey, value, data, HKEY=_winreg.HKEY_CURRENT_USER):
- """Set <value> (subkey) of <regkey> with <data>"""
- hkey = [item for item in dir(_winreg) if getattr(_winreg, item) == HKEY][0]
- print "setting value '%s' with data '%s' in regkey\n'%s\\%s'\n" % \
- (value, data, hkey, regkey)
- try:
- aReg = _winreg.OpenKey(HKEY, regkey, 0, _winreg.KEY_ALL_ACCESS)
- except:
- aReg = _winreg.CreateKey(HKEY, regkey)
- try:
- _winreg.SetValueEx(aReg, value, 0, _winreg.REG_SZ, data)
- finally:
- _winreg.CloseKey(aReg)
- if __name__ == "__main__":
- regkey = u"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"
- args = regkey, u"Shell Folders", u"Cookies"
- regdata = [(regkey, value, data) for regkey, value, data in walkRegistry(*args)]
- if len(regdata) == 1:
- regkey, value, existing_data = regdata[0]
- new_data = os.getenv("temp")
- setRegistry(regkey, value, new_data)
Advertisement
Add Comment
Please, Sign In to add comment