From 0e124dc1f23220057097e58421d78f76c2c000ab Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Tue, 31 Aug 2021 17:06:38 -0600 Subject: [PATCH] Skip Autologon cleanup if it wasn't used We found in a few cases systems starting requiring logon passwords after Auto Repairs were run. Autologon might be the cause so we should avoid running it, and the cleanup, if settings are already present. Addresses issue #175 --- scripts/auto_repairs.py | 2 +- scripts/wk/repairs/win.py | 45 ++++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/scripts/auto_repairs.py b/scripts/auto_repairs.py index e441632c..c4cdb339 100644 --- a/scripts/auto_repairs.py +++ b/scripts/auto_repairs.py @@ -1,4 +1,4 @@ -"""Wizard Kit: Auto-Repair Tool""" +"""Wizard Kit: Auto Repair Tool""" # vim: sts=2 sw=2 ts=2 import os diff --git a/scripts/wk/repairs/win.py b/scripts/wk/repairs/win.py index 15406f83..4eff3795 100644 --- a/scripts/wk/repairs/win.py +++ b/scripts/wk/repairs/win.py @@ -202,17 +202,6 @@ def build_menus(base_menus, title): def end_session(): """End Auto Repairs session.""" - # Delete Auto Repairs keys - try: - reg_delete_value('HKCU', AUTO_REPAIR_KEY, 'SessionStarted') - except FileNotFoundError: - LOG.error('Ending repair session but session not started.') - try: - cmd = ['reg', 'delete', fr'HKCU\{AUTO_REPAIR_KEY}', '/f'] - run_program(cmd) - except CalledProcessError: - LOG.error('Failed to remote Auto Repairs session settings') - # Remove logon task cmd = [ 'schtasks', '/delete', '/f', @@ -224,20 +213,26 @@ def end_session(): LOG.error("Failed to remove scheduled task or it doesn't exist.") # Disable Autologon - if is_autologon_enabled(): + autologon_selected = reg_read_value( + 'HKCU', AUTO_REPAIR_KEY, 'Use Autologon', + ) + if autologon_selected and is_autologon_enabled(): run_tool('Sysinternals', 'Autologon', download=True) reg_set_value( 'HKLM', r'Software\Microsoft\Windows NT\CurrentVersion\Winlogon', 'AutoAdminLogon', '0', 'SZ', ) - reg_delete_value( - 'HKLM', r'Software\Microsoft\Windows NT\CurrentVersion\Winlogon', - 'DefaultUserName', - ) - reg_delete_value( - 'HKLM', r'Software\Microsoft\Windows NT\CurrentVersion\Winlogon', - 'DefaultDomainName', - ) + + # Delete Auto Repairs keys + try: + reg_delete_value('HKCU', AUTO_REPAIR_KEY, 'SessionStarted') + except FileNotFoundError: + LOG.error('Ending repair session but session not started.') + try: + cmd = ['reg', 'delete', fr'HKCU\{AUTO_REPAIR_KEY}', '/f'] + run_program(cmd) + except CalledProcessError: + LOG.error('Failed to remote Auto Repairs session settings') def get_entry_settings(group, name): @@ -270,6 +265,12 @@ def init(menus): download=True, msg_good='DONE', ) + # Check if autologon is needed + if not session_started and is_autologon_enabled(): + # Avoid running Autologon and keep current settings + menus['Options'].options['Use Autologon']['Selected'] = False + save_selection_settings(menus) + # Start or resume a repair session if session_started: load_settings(menus) @@ -414,6 +415,10 @@ 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