美文网首页
注册表禁用小工具-PYQT

注册表禁用小工具-PYQT

作者: Bug2Coder | 来源:发表于2019-10-31 13:34 被阅读0次
    import win32timezone
    import win32con
    import win32api
    import time
    
    
    class Regedit(object):
        """
        创建、修改和读取注册表类
        """
    
        def __init__(self):
            self.reg_app_root = win32con.HKEY_LOCAL_MACHINE
            self.reg_gpe_root = win32con.HKEY_CURRENT_USER
            self.reg_config_path = r"SOFTWARE\EMAS\config"
            self.reg_flags = win32con.WRITE_OWNER | win32con.KEY_WOW64_64KEY | win32con.KEY_ALL_ACCESS
            self.reg_regedit_path = r"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\System"  # 注册表工具
            self.reg_gpedit_path = r"SOFTWARE\POLICIES\MICROSOFT\MMC\{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}"  # 组策略工具
            self.gpe_d = {'Restrict_Run': 1}  # 1禁用
            self.reg_d = {'DisableRegistryTools': 2}  # 2禁用
            self.gpe_e = {'Restrict_Run': 0}  # 0启用
            self.reg_e = {'DisableRegistryTools': 0}  # 0启用
    
        def disablereg(self):
            # 禁用注册表方法
            try:
                for keys, values in self.reg_d.items():
                    key, _ = win32api.RegCreateKeyEx(self.reg_gpe_root, self.reg_regedit_path, self.reg_flags)
                    win32api.RegSetValueEx(key, keys, 0, win32con.REG_DWORD, values)
                    win32api.RegCloseKey(key)
            except Exception as e:
                return e
    
        def disablegpe(self):
            # 禁用组策略
            try:
                for keys, values in self.gpe_d.items():
                    key, _ = win32api.RegCreateKeyEx(self.reg_gpe_root, self.reg_gpedit_path, self.reg_flags)
                    win32api.RegSetValueEx(key, keys, 0, win32con.REG_DWORD, values)
                    win32api.RegCloseKey(key)
            except Exception as e:
                return e
    
        def enablereg(self):
            # 开启注册表方法
            try:
                for keys, values in self.reg_e.items():
                    key, _ = win32api.RegCreateKeyEx(self.reg_gpe_root, self.reg_regedit_path, self.reg_flags)
                    win32api.RegSetValueEx(key, keys, 0, win32con.REG_DWORD, values)
                    win32api.RegCloseKey(key)
            except Exception as e:
                return e
    
        def enablegpe(self):
            # 开启组策略方法
            try:
                for keys, values in self.gpe_e.items():
                    key, _ = win32api.RegCreateKeyEx(self.reg_gpe_root, self.reg_gpedit_path, self.reg_flags)
                    win32api.RegSetValueEx(key, keys, 0, win32con.REG_DWORD, values)
                    win32api.RegCloseKey(key)
            except Exception as e:
                return e
    
        def sys_sleep(self):
            """
            设置睡眠时间为不睡眠
            :return:
            """
    
            win32api.ShellExecute(0, 'open', 'cmd',
                                  '/c powercfg /setacvalueindex 381b4222-f694-41f0-9685-ff5bb260df2e 238c9fa8-0aad-41ed-83f4-97be242c8f20 29f6c1db-86da-48c5-9fdb-f2b67b1f44da 0 && exit',
                                  '', 0)
    
        def change_power(self):
            """
            修改电源策略为平衡
            :return:
            """
            win32api.ShellExecute(0, 'open', 'cmd',
                                  '/c %SYSTEMROOT%\System32\powercfg.exe -setactive 381b4222-f694-41f0-9685-ff5bb260df2e && exit',
                                  '', 0)
    
        def check_status(self):
            """
            读取注册表信息、键不存在报错
            :return:
            """
            try:
                key = win32api.RegOpenKeyEx(self.reg_gpe_root, self.reg_regedit_path, 0, self.reg_flags)
                value_reg = win32api.RegQueryValueEx(key, 'DisableRegistryTools')[0]
                win32api.RegCloseKey(key)
                key = win32api.RegOpenKeyEx(self.reg_gpe_root, self.reg_gpedit_path, 0, self.reg_flags)
                value_gpe = win32api.RegQueryValueEx(key, 'Restrict_Run')[0]
                win32api.RegCloseKey(key)
                return value_reg, value_gpe
    
            except Exception as e:
                return e
    
    
    import sys
    from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QDesktopWidget, QGridLayout
    
    
    class Winform(QWidget):
        def __init__(self, parent=None):
            super(Winform, self).__init__(parent)
            self.init_UI()
    
        def init_UI(self):
            """
            界面设置
            :return:
            """
            self.setWindowTitle("小工具集")
            # self.resize(600, 300)
            # self.setFixedSize(self.width(), self.height())
            self.center()
            self.gridLayout = QGridLayout()
            self.lab1 = QLabel("注册表选项")
            self.lab2 = QLabel("注册表编辑器(开启/关闭)")
    
            self.btnro = QPushButton('')
            self.btnro.setObjectName('reg')
            self.btnro.clicked.connect(self.myevent)
    
            self.lab3 = QLabel("组策略选项")
            self.lab4 = QLabel("组策略编辑器(开启/关闭)")
    
            self.btngo = QPushButton('')
            self.btngo.setObjectName('gpe')
            self.btngo.clicked.connect(self.myevent)
    
            self.lab5 = QLabel("电源策略选项")
            self.lab6 = QLabel("电源策略平衡(切换)")
    
            self.btnpow = QPushButton('开启')
            self.btnpow.setObjectName('pow')
            self.btnpow.clicked.connect(self.myevent)
    
            self.lab7 = QLabel("电源睡眠选项")
            self.lab8 = QLabel("电源睡眠禁用(切换)")
    
            self.btnsleep = QPushButton('开启')
            self.btnsleep.setObjectName('sleep')
            self.btnsleep.clicked.connect(self.myevent)
    
            # 向布局中添加这几个控件
            self.gridLayout.addWidget(self.lab1, 0, 0)
            self.gridLayout.addWidget(self.lab2, 1, 0)
            self.gridLayout.addWidget(self.btnro, 1, 1)
    
            self.gridLayout.addWidget(self.lab3, 2, 0)
            self.gridLayout.addWidget(self.lab4, 3, 0)
            self.gridLayout.addWidget(self.btngo, 3, 1)
    
            self.gridLayout.addWidget(self.lab5, 0, 2)
            self.gridLayout.addWidget(self.lab6, 1, 2)
            self.gridLayout.addWidget(self.btnpow, 1, 3)
    
            self.gridLayout.addWidget(self.lab7, 2, 2)
            self.gridLayout.addWidget(self.lab8, 3, 2)
            self.gridLayout.addWidget(self.btnsleep, 3, 3)
            self.check_status()
            self.setLayout(self.gridLayout)
    
        def center(self):
            # 窗口居中方法
            # 获得窗口
            qr = self.frameGeometry()
            # 获得屏幕中心点
            cp = QDesktopWidget().availableGeometry().center()
            # 显示到屏幕中心
            qr.moveCenter(cp)
            self.move(qr.topLeft())
    
        def check_status(self):
            """
            检查状态,并设置按钮文本显示
            :return:
            """
            value_reg, value_gpe = r.check_status()
            if value_reg == 0:
                self.btnro.setText('已开启')
            if value_gpe == 0:
                self.btngo.setText('已启用')
            if value_reg == 2:
                self.btnro.setText('已禁用')
            if value_gpe == 1:
                self.btngo.setText('已禁用')
    
        def myevent(self):
            """
            事件方法
            :return:
            """
            button = self.sender()
            button_name = button.objectName()
            value_reg, value_gpe = r.check_status()
            if button_name == "reg":
                if value_reg == 0:
                    r.disablereg()
                if value_reg != 0:
                    r.enablereg()
                self.check_status()
            if button_name == "gpe":
                if value_gpe == 0:
                    r.disablegpe()
                if value_gpe != 0:
                    r.enablegpe()
                self.check_status()
            if button_name == "pow":
                r.change_power()
                self.btnpow.setText('已开启')
            if button_name == "sleep":
                r.sys_sleep()
                self.btnsleep.setText('已开启')
    
    
    if __name__ == "__main__":
        r = Regedit()
        app = QApplication(sys.argv)
        form = Winform()
        form.show()
        sys.exit(app.exec_())
    

    相关文章

      网友评论

          本文标题:注册表禁用小工具-PYQT

          本文链接:https://www.haomeiwen.com/subject/uixtbctx.html