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
|
# Set details
|
||||||
self.details = {
|
self.details = {
|
||||||
'Function': function,
|
'Function': function,
|
||||||
'Selected': True,
|
'Selected': False,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ BASE_MENUS = {
|
||||||
MenuEntry('Disable Windows Updates', 'auto_windows_updates_disable'),
|
MenuEntry('Disable Windows Updates', 'auto_windows_updates_disable'),
|
||||||
MenuEntry('Reset Windows Updates', 'auto_windows_updates_reset'),
|
MenuEntry('Reset Windows Updates', 'auto_windows_updates_reset'),
|
||||||
MenuEntry('Reboot', placeholder_reboot),
|
MenuEntry('Reboot', placeholder_reboot),
|
||||||
MenuEntry('CHKDSK', placeholder_function),
|
MenuEntry('CHKDSK', 'auto_chkdsk'),
|
||||||
MenuEntry('DISM RestoreHealth', 'auto_dism'),
|
MenuEntry('DISM RestoreHealth', 'auto_dism'),
|
||||||
MenuEntry('SFC Scan', placeholder_function),
|
MenuEntry('SFC Scan', placeholder_function),
|
||||||
MenuEntry('Fix File Associations', placeholder_function),
|
MenuEntry('Fix File Associations', placeholder_function),
|
||||||
|
|
|
||||||
|
|
@ -369,6 +369,8 @@ def save_settings(group, name, result=None, **kwargs):
|
||||||
'failed': result['Failed'],
|
'failed': result['Failed'],
|
||||||
'message': result['Message'],
|
'message': result['Message'],
|
||||||
})
|
})
|
||||||
|
if isinstance(result['Exception'], GenericWarning):
|
||||||
|
kwargs['warning'] = True
|
||||||
|
|
||||||
# Write values to registry
|
# Write values to registry
|
||||||
for value_name, data in kwargs.items():
|
for value_name, data in kwargs.items():
|
||||||
|
|
@ -458,6 +460,31 @@ def auto_backup_registry(group, name):
|
||||||
save_settings(group, name, result=result)
|
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):
|
def auto_dism(group, name):
|
||||||
"""Run DISM repairs."""
|
"""Run DISM repairs."""
|
||||||
needs_reboot = False
|
needs_reboot = False
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue