Add auto_chkdsk()

This commit is contained in:
2Shirt 2021-04-29 21:08:50 -06:00
parent 973dad3240
commit e17c96d465
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C
2 changed files with 29 additions and 2 deletions

View file

@ -29,7 +29,7 @@ class MenuEntry():
# Set details
self.details = {
'Function': function,
'Selected': True,
'Selected': False,
**kwargs,
}
@ -64,7 +64,7 @@ BASE_MENUS = {
MenuEntry('Disable Windows Updates', 'auto_windows_updates_disable'),
MenuEntry('Reset Windows Updates', 'auto_windows_updates_reset'),
MenuEntry('Reboot', placeholder_reboot),
MenuEntry('CHKDSK', placeholder_function),
MenuEntry('CHKDSK', 'auto_chkdsk'),
MenuEntry('DISM RestoreHealth', 'auto_dism'),
MenuEntry('SFC Scan', placeholder_function),
MenuEntry('Fix File Associations', placeholder_function),

View file

@ -369,6 +369,8 @@ def save_settings(group, name, result=None, **kwargs):
'failed': result['Failed'],
'message': result['Message'],
})
if isinstance(result['Exception'], GenericWarning):
kwargs['warning'] = True
# Write values to registry
for value_name, data in kwargs.items():
@ -458,6 +460,31 @@ def auto_backup_registry(group, name):
save_settings(group, name, result=result)
def auto_chkdsk(group, name):
"""Run CHKDSK repairs."""
needs_reboot = False
system_disk = os.environ.get('SYSTEMDRIVE', 'C:')
result = TRY_PRINT.run(f'CHKDSK ({system_disk})...', run_chkdsk_online)
# Run offline CHKDSK if required
if result['Failed'] and 'Repaired' not in result['Message']:
needs_reboot = True
result = TRY_PRINT.run(
f'Scheduling offline CHKDSK ({system_disk})...',
run_chkdsk_offline,
)
if not result['Failed']:
# Successfully set dirty bit to force offline check
# Set result['Failed'] to True because we failed to repair online
result['Failed'] = True
result['Message'] = 'Scheduled offline repairs'
# Done
save_settings(group, name, result=result)
if needs_reboot:
reboot()
def auto_dism(group, name):
"""Run DISM repairs."""
needs_reboot = False