你需要执行相反的操作,即将Windows更新相关的注册表项恢复到默认状态,重新启用计划任务,并将Windows Update服务设置回自动启动。下面是如何实现这一系列操作的代码:
import subprocess
import winreg
import platform
import ctypes # 导入 ctypes 模块def run_command(command):try:result = subprocess.run(command,check=True,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True,)print(result.stdout)except subprocess.CalledProcessError as e:print(f"命令执行出错: {e}")print(f"错误详情: {e.stderr}")def get_current_windows_version():# 获取当前Windows版本return platform.version()def delete_registry_value(key_path, value_name):try:# 打开注册表项key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path, 0, winreg.KEY_SET_VALUE)# 删除指定的注册表值winreg.DeleteValue(key, value_name)winreg.CloseKey(key)print(f"已删除 {key_path}\\{value_name}")except FileNotFoundError:print(f"注册表项 {key_path} 未找到,无需删除 {value_name}.")except OSError as e:print(f"尝试删除 {key_path}\\{value_name} 时发生错误: {e}")def reenable_windows_updates():# 删除之前设置的注册表值delete_registry_value(r"SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU", "NoAutoUpdate")delete_registry_value(r"SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate", "TargetReleaseVersion")delete_registry_value(r"SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate", "TargetReleaseVersionInfo")print(" 2. 已恢复Windows更新设置:通过组策略编辑器")def enable_scheduled_start_task():# PowerShell 命令来启用 "Scheduled Start" 任务powershell_command = ('Get-ScheduledTask -TaskName "Scheduled Start" -TaskPath "\\Microsoft\\Windows\\WindowsUpdate\\" | '"Enable-ScheduledTask")# 运行 PowerShell 命令run_command(["powershell", "-Command", powershell_command])def enable_windows_update_service():# 命令行指令用于启用 Windows Update 服务command = "sc config wuauserv start= auto"run_command(command)if __name__ == "__main__":# 检查是否以管理员权限运行if not ctypes.windll.shell32.IsUserAnAdmin():print("请以管理员权限运行此脚本。")input("按 Enter 键退出...")exit()# 获取当前Windows版本current_version = get_current_windows_version()# 重新启用Windows更新reenable_windows_updates()enable_scheduled_start_task()enable_windows_update_service()# 提示用户重启计算机print("所有操作已完成。请重启计算机以应用更改。")print("按 Enter 键退出...")input()