diff --git a/PYTHON/remove_SecHealthUI_stub.py b/PYTHON/remove_SecHealthUI_stub.py new file mode 100644 index 0000000..3ad6596 --- /dev/null +++ b/PYTHON/remove_SecHealthUI_stub.py @@ -0,0 +1,54 @@ +import os, sqlite3 + +conn = sqlite3.connect(os.path.expandvars(r'%ProgramData%\Microsoft\Windows\AppRepository\StateRepository-Machine.srd')) + +cursor = conn.execute( + ''' + SELECT _PackageID, PackageFullName FROM main.Package + WHERE PackageFullName LIKE "Microsoft.Windows.SecHealthUI%"; + ''' +) +records_to_update = {} +for row in cursor: + records_to_update[row[0]] = row[1] + +cursor = conn.execute( + ''' + SELECT name, sql FROM main.sqlite_master + WHERE type = "trigger" AND tbl_name = "Package" AND name LIKE "TRG_AFTER_UPDATE%"; + ''' +) +triggers_backup = {} +for row in cursor: + triggers_backup[row[0]] = row[1] + +# Delete update triggers for table "Package" +for TriggerName, TriggerSQL in triggers_backup.items(): + conn.execute( + ''' + DROP TRIGGER %s; + ''' % TriggerName + ) + conn.commit() + print('Trigger "%s" has been cleared.' % TriggerName) + +# Set IsInbox to 0 +for PackageID, PackageFullName in records_to_update.items(): + conn.execute( + ''' + UPDATE main.Package SET IsInbox = 0 WHERE _PackageID = %d; + ''' % PackageID + ) + conn.commit() + print('IsInbox of "%s" has been set to 0.' % PackageFullName) + +# Restore triggers +for TriggerName, TriggerSQL in triggers_backup.items(): + conn.execute( + ''' + %s; + ''' % TriggerSQL + ) + conn.commit() + print('Trigger "%s" has been restored.' % TriggerName) +