Add auto_chkdsk()
This commit is contained in:
parent
973dad3240
commit
e17c96d465
2 changed files with 29 additions and 2 deletions
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue