Add files via upload
This commit is contained in:
1 file changed
+72
-92
@@ -91,6 +91,7 @@ class MainWindow_Controller(QMainWindow):
|
||||
try:
|
||||
self.ntdll = ctypes.WinDLL('ntdll', use_last_error=True)
|
||||
self.psapi = ctypes.WinDLL('Psapi', use_last_error=True)
|
||||
self.user32 = ctypes.WinDLL('user32', use_last_error=True)
|
||||
self.kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
|
||||
self.advapi32 = ctypes.WinDLL('advapi32', use_last_error=True)
|
||||
self.iphlpapi = ctypes.WinDLL('iphlpapi', use_last_error=True)
|
||||
@@ -1006,81 +1007,62 @@ class MainWindow_Controller(QMainWindow):
|
||||
|
||||
def open_registry_key(self, hkey, subkey, access=0xF003F):
|
||||
key_handle = ctypes.wintypes.HANDLE()
|
||||
result = self.advapi32.RegOpenKeyExW(hkey, subkey, 0, access, ctypes.byref(key_handle))
|
||||
return key_handle
|
||||
|
||||
def set_registry_value(self, hkey, subkey, value_name, value_type, value):
|
||||
key_handle = self.open_registry_key(hkey, subkey)
|
||||
self.advapi32.RegSetValueExW(key_handle, value_name, 0,
|
||||
value_type, ctypes.create_unicode_buffer(value), len(value) * 2)
|
||||
self.advapi32.RegCloseKey(key_handle)
|
||||
|
||||
def delete_registry_value(self, key_handle, value_name):
|
||||
try:
|
||||
result = self.advapi32.RegDeleteValueW(key_handle, value_name)
|
||||
if result == 0 and self.track_proc:
|
||||
self.kill_process("註冊表攔截", *self.track_proc)
|
||||
except Exception as e:
|
||||
pass
|
||||
if self.advapi32.RegOpenKeyExW(hkey, subkey, 0, access, ctypes.byref(key_handle)) == 0:
|
||||
return key_handle
|
||||
return None
|
||||
|
||||
def delete_registry_key(self, hkey, subkey):
|
||||
try:
|
||||
result = self.advapi32.RegDeleteKeyW(hkey, subkey)
|
||||
if result == 0 and self.track_proc:
|
||||
self.kill_process("註冊表攔截", *self.track_proc)
|
||||
except Exception as e:
|
||||
pass
|
||||
if self.advapi32.RegDeleteKeyW(hkey, subkey) == 0 and self.track_proc:
|
||||
self.kill_process("註冊表攔截", *self.track_proc)
|
||||
|
||||
def create_registry_keys(self, keys):
|
||||
for hkey, subkey in keys:
|
||||
key_handle = ctypes.wintypes.HANDLE()
|
||||
def create_registry_keys(self, hkey, subkey):
|
||||
key_handle = self.open_registry_key(hkey, subkey)
|
||||
if key_handle:
|
||||
self.advapi32.RegCreateKeyExW(hkey, subkey, 0, None, 0, 0xF003F, None, ctypes.byref(key_handle), None)
|
||||
self.advapi32.RegCloseKey(key_handle)
|
||||
|
||||
def set_registry_value(self, hkey, subkey, value_name, value_data):
|
||||
key_handle = self.open_registry_key(hkey, subkey)
|
||||
if key_handle:
|
||||
self.advapi32.RegSetValueExW(key_handle, value_name, 0, 1, value_data, (len(value_data) + 1) * 2)
|
||||
self.advapi32.RegCloseKey(key_handle)
|
||||
|
||||
def delete_registry_value(self, hkey, subkey, value_name):
|
||||
key_handle = self.open_registry_key(hkey, subkey)
|
||||
if key_handle and self.advapi32.RegDeleteValueW(key_handle, value_name) == 0 and self.track_proc:
|
||||
self.kill_process("註冊表攔截", *self.track_proc)
|
||||
self.advapi32.RegCloseKey(key_handle)
|
||||
|
||||
def repair_system_restrict(self):
|
||||
try:
|
||||
permissions = ["NoControlPanel", "NoDrives", "NoFileMenu", "NoFind", "NoRealMode", "NoRecentDocsMenu","NoSetFolders",
|
||||
"NoSetFolderOptions", "NoViewOnDrive", "NoClose", "NoRun", "NoDesktop", "NoLogOff", "NoFolderOptions", "RestrictRun",
|
||||
"NoViewContexMenu", "HideClock", "NoStartMenuMorePrograms", "NoStartMenuMyGames", "NoStartMenuMyMusic", "DisableCMD",
|
||||
"NoWinKeys", "StartMenuLogOff", "NoSimpleNetlDList", "NoLowDiskSpaceChecks", "DisableLockWorkstation", "Restrict_Run",
|
||||
"DisableTaskMgr", "DisableRegistryTools", "DisableChangePassword", "Wallpaper", "NoComponents", "NoAddingComponents",
|
||||
"NoStartMenuPinnedList", "NoActiveDesktop", "NoSetActiveDesktop", "NoActiveDesktopChanges", "NoChangeStartMenu",
|
||||
"NoFavoritesMenu", "NoRecentDocsHistory", "NoSetTaskbar", "NoSMHelp", "NoTrayContextMenu", "NoViewContextMenu",
|
||||
"NoManageMyComputerVerb", "NoWindowsUpdate", "ClearRecentDocsOnExit", "NoStartMenuNetworkPlaces"]
|
||||
keys_to_create = [(0x80000001, r"Software\Policies\Microsoft\MMC"),
|
||||
(0x80000001, r"Software\Policies\Microsoft\MMC\{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}"),
|
||||
(0x80000001, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"),
|
||||
(0x80000001, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"),
|
||||
(0x80000001, r"SOFTWARE\Policies\Microsoft\Windows\System"),
|
||||
(0x80000002, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"),
|
||||
(0x80000002, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"),
|
||||
(0x80000002, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop"),
|
||||
(0x80000002, r"SOFTWARE\Policies\Microsoft\Windows\System")]
|
||||
self.create_registry_keys(keys_to_create)
|
||||
for hkey, subkey in keys_to_create:
|
||||
try:
|
||||
key_handle = self.open_registry_key(hkey, subkey)
|
||||
for perm in permissions:
|
||||
self.delete_registry_value(key_handle, perm)
|
||||
self.advapi32.RegCloseKey(key_handle)
|
||||
except:
|
||||
pass
|
||||
except:
|
||||
pass
|
||||
|
||||
def repair_system_file_icon(self):
|
||||
try:
|
||||
self.set_registry_value(0x80000000, 'exefile', 'DefaultIcon', 1, '%1')
|
||||
except Exception as e:
|
||||
pass
|
||||
try:
|
||||
self.set_registry_value(0x80000002, r'SOFTWARE\Classes\exefile', 'DefaultIcon', 1, '%1')
|
||||
except Exception as e:
|
||||
pass
|
||||
permissions = ["NoControlPanel", "NoDrives", "NoFileMenu", "NoFind", "NoRealMode", "NoRecentDocsMenu","NoSetFolders",
|
||||
"NoSetFolderOptions", "NoViewOnDrive", "NoClose", "NoRun", "NoDesktop", "NoLogOff", "NoFolderOptions", "RestrictRun",
|
||||
"NoViewContexMenu", "HideClock", "NoStartMenuMorePrograms", "NoStartMenuMyGames", "NoStartMenuMyMusic", "DisableCMD",
|
||||
"NoWinKeys", "StartMenuLogOff", "NoSimpleNetlDList", "NoLowDiskSpaceChecks", "DisableLockWorkstation", "Restrict_Run",
|
||||
"DisableTaskMgr", "DisableRegistryTools", "DisableChangePassword", "Wallpaper", "NoComponents", "NoAddingComponents",
|
||||
"NoStartMenuPinnedList", "NoActiveDesktop", "NoSetActiveDesktop", "NoActiveDesktopChanges", "NoChangeStartMenu",
|
||||
"NoFavoritesMenu", "NoRecentDocsHistory", "NoSetTaskbar", "NoSMHelp", "NoTrayContextMenu", "NoViewContextMenu",
|
||||
"NoManageMyComputerVerb", "NoWindowsUpdate", "ClearRecentDocsOnExit", "NoStartMenuNetworkPlaces"]
|
||||
keys_to_create = [(0x80000001, r"Software\Policies\Microsoft\MMC"),
|
||||
(0x80000001, r"Software\Policies\Microsoft\MMC\{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}"),
|
||||
(0x80000001, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"),
|
||||
(0x80000001, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"),
|
||||
(0x80000001, r"SOFTWARE\Policies\Microsoft\Windows\System"),
|
||||
(0x80000002, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"),
|
||||
(0x80000002, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"),
|
||||
(0x80000002, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop"),
|
||||
(0x80000002, r"SOFTWARE\Policies\Microsoft\Windows\System")]
|
||||
for hkey, subkey in keys_to_create:
|
||||
try:
|
||||
self.create_registry_keys(hkey, subkey)
|
||||
for value_name in permissions:
|
||||
self.delete_registry_value(hkey, subkey, value_name)
|
||||
except:
|
||||
print(e)
|
||||
|
||||
def repair_system_image(self):
|
||||
try:
|
||||
key_handle = self.open_registry_key(0x80000002,
|
||||
r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options', 0xF003F)
|
||||
image_file = r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options'
|
||||
key_handle = self.open_registry_key(0x80000002, image_file, 0xF003F)
|
||||
count = ctypes.wintypes.DWORD()
|
||||
self.advapi32.RegQueryInfoKeyW(key_handle, None, None, None,
|
||||
ctypes.byref(count), None, None, None, None, None, None, None)
|
||||
@@ -1090,35 +1072,33 @@ class MainWindow_Controller(QMainWindow):
|
||||
self.advapi32.RegEnumKeyW(key_handle, i, subkey_name, 256)
|
||||
self.delete_registry_key(key_handle, subkey_name.value)
|
||||
except Exception as e:
|
||||
pass
|
||||
print(e)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def repair_system_file_icon(self):
|
||||
try:
|
||||
self.set_registry_value(0x80000000, 'exefile', 'DefaultIcon', '%1')
|
||||
self.set_registry_value(0x80000002, r'SOFTWARE\Classes\exefile', 'DefaultIcon', '%1')
|
||||
except:
|
||||
pass
|
||||
|
||||
def repair_system_file_type(self):
|
||||
try:
|
||||
data = [('.exe', 'exefile'), ('exefile', 'Application')]
|
||||
key_handle = self.open_registry_key(0x80000002, r'SOFTWARE\Classes', 0xF003F)
|
||||
for ext, value in data:
|
||||
self.set_registry_value(0x80000002, ext, '', 1, value)
|
||||
self.advapi32.RegCloseKey(key_handle)
|
||||
key_handle = self.open_registry_key(0x80000001, r'SOFTWARE\Classes', 0xF003F)
|
||||
for ext, value in data:
|
||||
self.set_registry_value(0x80000001, ext, '', 1, value)
|
||||
self.set_registry_value(0x80000001, ext + r'\shell\open\command', '', 1, '"%1" %*')
|
||||
self.advapi32.RegCloseKey(key_handle)
|
||||
except Exception as e:
|
||||
pass
|
||||
for hkey in [0x80000002, 0x80000001, 0x80000000]:
|
||||
for ext, value in [('.exe', 'exefile'), ('exefile', 'Application')]:
|
||||
try:
|
||||
self.set_registry_value(hkey, r'SOFTWARE\Classes', ext, value)
|
||||
self.set_registry_value(hkey, f'{ext}\\shell\\open\\command', '', '"%1" %*')
|
||||
except:
|
||||
pass
|
||||
|
||||
def repair_system_wallpaper(self):
|
||||
try:
|
||||
key_handle = self.open_registry_key(0x80000001, r"Control Panel\Desktop", 0xF003F)
|
||||
self.advapi32.RegSetValueExW(key_handle, "Wallpaper", 0, 1,
|
||||
ctypes.create_unicode_buffer('C:/Windows/web/wallpaper/windows/img0.jpg'),
|
||||
len('C:/Windows/web/wallpaper/windows/img0.jpg') * 2)
|
||||
self.advapi32.RegCloseKey(key_handle)
|
||||
ctypes.windll.user32.SystemParametersInfoW(20, 0, 'C:/Windows/web/wallpaper/windows/img0.jpg', 2)
|
||||
wallpaper = "C:/Windows/web/wallpaper/windows/img0.jpg"
|
||||
self.set_registry_value(0x80000001, "Wallpaper", ctypes.create_unicode_buffer(wallpaper), wallpaper)
|
||||
self.user32.SystemParametersInfoW(20, 0, wallpaper, 2)
|
||||
except Exception as e:
|
||||
pass
|
||||
print(e)
|
||||
|
||||
def clean_system(self):
|
||||
try:
|
||||
@@ -1194,17 +1174,17 @@ class MainWindow_Controller(QMainWindow):
|
||||
Thread(target=self.block_software_window, daemon=True).start()
|
||||
|
||||
def get_foreground_window_title(self):
|
||||
hWnd = ctypes.windll.user32.GetForegroundWindow()
|
||||
length = ctypes.windll.user32.GetWindowTextLengthW(hWnd)
|
||||
hWnd = self.user32.GetForegroundWindow()
|
||||
length = self.user32.GetWindowTextLengthW(hWnd)
|
||||
title = ctypes.create_unicode_buffer(length + 1)
|
||||
ctypes.windll.user32.GetWindowTextW(hWnd, title, length + 1)
|
||||
self.user32.GetWindowTextW(hWnd, title, length + 1)
|
||||
return str(title.value)
|
||||
|
||||
def find_window_by_name(self, window_name):
|
||||
return ctypes.windll.user32.FindWindowW(None, ctypes.create_unicode_buffer(window_name))
|
||||
return self.user32.FindWindowW(None, ctypes.create_unicode_buffer(window_name))
|
||||
|
||||
def post_close_message(self, hWnd):
|
||||
ctypes.windll.user32.PostMessageW(hWnd, 274, 61536, 0)
|
||||
self.user32.PostMessageW(hWnd, 274, 61536, 0)
|
||||
|
||||
def block_software_window(self):
|
||||
while self.block_window:
|
||||
|
||||
Reference in new issue
Block a user