Skip to content

Instantly share code, notes, and snippets.

@casperlehmann
Last active August 23, 2019 13:12
Show Gist options
  • Save casperlehmann/649c57e8c60f875de7a1e78ac20697ee to your computer and use it in GitHub Desktop.
Save casperlehmann/649c57e8c60f875de7a1e78ac20697ee to your computer and use it in GitHub Desktop.
Class for setting, changing and deleting environment variables in Windows Registry
# python
# Borrowing heavily from: https://stackoverflow.com/a/35286642
import winreg
class RegHandler:
def __init__(self, reg_path: str):
self.reg_path = reg_path
def set_reg(self, name, value):
try:
winreg.CreateKey(winreg.HKEY_CURRENT_USER, self.reg_path)
registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, self.reg_path, 0,
winreg.KEY_WRITE)
winreg.SetValueEx(registry_key, name, 0, winreg.REG_SZ, value)
winreg.CloseKey(registry_key)
return True
except WindowsError:
return False
def get_reg(self, name):
try:
registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, self.reg_path, 0,
winreg.KEY_READ)
value, regtype = winreg.QueryValueEx(registry_key, name)
winreg.CloseKey(registry_key)
return value
except WindowsError:
return None
def del_reg(self, name):
try:
winreg.CreateKey(winreg.HKEY_CURRENT_USER, self.reg_path)
registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, self.reg_path, 0,
winreg.KEY_WRITE)
winreg.DeleteValue(registry_key, name)
winreg.CloseKey(registry_key)
return True
except WindowsError:
return False
if __name__ == '__main__':
# Tests
# Setting environment variables
pairs = (('testing', 'A'), ('testing', 'B'), ('testing', 'C'), ('testing', 'B'))
EnvHandler = RegHandler(reg_path = r'Environment')
assert EnvHandler.get_reg('testing') is None
for k, v in pairs:
EnvHandler.set_reg(k, v)
assert EnvHandler.get_reg(k) == v
else:
EnvHandler.del_reg(k)
assert EnvHandler.get_reg(k) is None
# Example set MouseSensitivity
MouseHandler = RegHandler(reg_path = r'Control Panel\Mouse')
mouse_sens = MouseHandler.get_reg('MouseSensitivity')
MouseHandler.set_reg('MouseSensitivity', '7')
assert MouseHandler.get_reg('MouseSensitivity') == '7'
MouseHandler.set_reg('MouseSensitivity', '8')
assert MouseHandler.get_reg('MouseSensitivity') == '8'
# Reset MouseSensitivity
MouseHandler.set_reg('MouseSensitivity', mouse_sens)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment