From 56a9ccd818927c104648b638ee138f856977a7ab Mon Sep 17 00:00:00 2001 From: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> Date: Mon, 21 Dec 2020 13:39:29 -0800 Subject: [PATCH] Make Windows registry key unique to allow more than one instance --- plexpy/windows.py | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/plexpy/windows.py b/plexpy/windows.py index ec6019d7..c04600a3 100644 --- a/plexpy/windows.py +++ b/plexpy/windows.py @@ -153,22 +153,12 @@ def set_startup(): else: args = [exe, plexpy.FULL_PATH] + registry_key_name = '{}_{}'.format(common.PRODUCT, plexpy.CONFIG.PMS_UUID) + cmd = ' '.join(cmd_quote(arg) for arg in args).replace('python.exe', 'pythonw.exe').replace("'", '"') if plexpy.CONFIG.LAUNCH_STARTUP: - try: - winreg.CreateKey(winreg.HKEY_CURRENT_USER, startup_reg_path) - registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, startup_reg_path, 0, winreg.KEY_WRITE) - winreg.SetValueEx(registry_key, common.PRODUCT, 0, winreg.REG_SZ, cmd) - winreg.CloseKey(registry_key) - logger.info("Added Tautulli to Windows system startup registry key.") - return True - except WindowsError as e: - logger.error("Failed to create Windows system startup registry key: %s", e) - return False - - else: - # Check if registry value exists + # Rename old Tautulli registry key try: registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, startup_reg_path, 0, winreg.KEY_ALL_ACCESS) winreg.QueryValueEx(registry_key, common.PRODUCT) @@ -180,6 +170,33 @@ def set_startup(): try: winreg.DeleteValue(registry_key, common.PRODUCT) winreg.CloseKey(registry_key) + except WindowsError: + pass + + try: + winreg.CreateKey(winreg.HKEY_CURRENT_USER, startup_reg_path) + registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, startup_reg_path, 0, winreg.KEY_WRITE) + winreg.SetValueEx(registry_key, registry_key_name, 0, winreg.REG_SZ, cmd) + winreg.CloseKey(registry_key) + logger.info("Added Tautulli to Windows system startup registry key.") + return True + except WindowsError as e: + logger.error("Failed to create Windows system startup registry key: %s", e) + return False + + else: + # Check if registry value exists + try: + registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, startup_reg_path, 0, winreg.KEY_ALL_ACCESS) + winreg.QueryValueEx(registry_key, registry_key_name) + reg_value_exists = True + except WindowsError: + reg_value_exists = False + + if reg_value_exists: + try: + winreg.DeleteValue(registry_key, registry_key_name) + winreg.CloseKey(registry_key) logger.info("Removed Tautulli from Windows system startup registry key.") return True except WindowsError as e: