diff --git a/scripts/wk/os/win.py b/scripts/wk/os/win.py index b26ef7c2..7a9e7400 100644 --- a/scripts/wk/os/win.py +++ b/scripts/wk/os/win.py @@ -66,10 +66,6 @@ KNOWN_HIVE_NAMES = { winreg.HKEY_CURRENT_USER: 'HKCU', winreg.HKEY_LOCAL_MACHINE: 'HKLM', winreg.HKEY_USERS: 'HKU', - winreg.HKEY_CLASSES_ROOT: 'HKEY_CLASSES_ROOT', - winreg.HKEY_CURRENT_USER: 'HKEY_CURRENT_USER', - winreg.HKEY_LOCAL_MACHINE: 'HKEY_LOCAL_MACHINE', - winreg.HKEY_USERS: 'HKEY_USERS', } OS_VERSION = platform.win32_ver()[0] OS_VERSION = 8.1 if OS_VERSION == '8.1' else int(OS_VERSION) diff --git a/scripts/wk/repairs/win.py b/scripts/wk/repairs/win.py index 8396c708..78176b6b 100644 --- a/scripts/wk/repairs/win.py +++ b/scripts/wk/repairs/win.py @@ -185,13 +185,13 @@ def end_session(menus): # Disable Autologon try: - autologon_selected = reg_read_value( + use_autologon_in_autorepairs = reg_read_value( 'HKCU', AUTO_REPAIR_KEY, 'Use Autologon', ) except FileNotFoundError: - autologon_selected = False # Assuming it isn't being used - if autologon_selected and is_autologon_enabled(): + use_autologon_in_autorepairs = False + if use_autologon_in_autorepairs and is_autologon_enabled(): run_tool('Sysinternals', 'Autologon', '-accepteula', download=True) reg_set_value( 'HKLM', r'Software\Microsoft\Windows NT\CurrentVersion\Winlogon', @@ -245,8 +245,10 @@ def init(menus): # Check if autologon is needed if not session_started and is_autologon_enabled(): - # Avoid running Autologon and keep current settings + LOG.warning('Skipping Autologon to preserve current settings.') + menus['Options'].options['Use Autologon']['Disabled'] = True menus['Options'].options['Use Autologon']['Selected'] = False + reg_set_value('HKCU', AUTO_REPAIR_KEY, 'Use Autologon', 0, 'DWORD') save_selection_settings(menus) # Start or resume a repair session @@ -273,6 +275,13 @@ def init_run(options): 'Sysinternals', 'Autologon', '-accepteula', download=True, msg_good='DONE', ) + if is_autologon_enabled(): + # Update session settings to remove during end_session() + reg_set_value('HKCU', AUTO_REPAIR_KEY, 'Use Autologon', 1, 'DWORD') + else: + # A password wasn't provided or the account doesn't have one + options['Use Autologon']['Disabled'] = True + options['Use Autologon']['Selected'] = False if options['Sync Clock']['Selected']: TRY_PRINT.run( 'Syncing Clock...', run_tool, 'Neutron', 'Neutron', msg_good='DONE', @@ -392,14 +401,7 @@ def run_auto_repairs(base_menus): save_selection_settings(menus) print_info('Initializing...') init_run(menus['Options'].options) - reg_set_value( - 'HKCU', AUTO_REPAIR_KEY, 'Use Autologon', - int(is_autologon_enabled()), 'DWORD', - ) - if not is_autologon_enabled(): - # Either it wasn't selected or a password wasn't entered - menus['Options'].options['Use Autologon']['Selected'] = False - save_selection_settings(menus) + save_selection_settings(menus) if not session_started: init_session(menus['Options'].options) print_info('Running repairs')