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.

Revisions

  1. casperlehmann revised this gist Aug 23, 2019. No changes.
  2. casperlehmann renamed this gist Aug 23, 2019. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. casperlehmann created this gist Aug 23, 2019.
    65 changes: 65 additions & 0 deletions win-env-var-setter
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,65 @@
    # 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)