吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1758|回复: 6
收起左侧

[Python 原创] python代码阻止windows更新9999天

[复制链接]
fengyuwuqing 发表于 2025-8-12 14:08
def set_9999_day_pause():
    """设置 9999 天(0x270f)更新暂停 - 使用字符串格式"""
    try:
        # 核心注册表路径
        UX_SETTINGS_PATH = r"SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"
        POLICIES_PATH = r"SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"

        # 十六进制值 0x270f = 十进制 9999
        PAUSE_DAYS = 0x270f

        # 1. 禁用更新服务
        try:
            # 尝试停止服务(忽略1062错误)
            subprocess.run(['sc', 'stop', 'wuauserv'],
                           stdout=subprocess.DEVNULL,
                           stderr=subprocess.DEVNULL)
        except:
            pass

        # 确保服务被禁用
        subprocess.run(['sc', 'config', 'wuauserv', 'start=', 'disabled'],
                       stdout=subprocess.DEVNULL,
                       stderr=subprocess.DEVNULL)

        # 2. 计算9999天后的日期 (字符串格式)
        future_date = datetime.datetime.now() + datetime.timedelta(days=PAUSE_DAYS)
        date_str = future_date.strftime("%Y-%m-%dT%H:%M:%SZ")

        # 3. 设置暂停参数 (使用字符串格式)
        with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, UX_SETTINGS_PATH, 0,
                            winreg.KEY_WRITE | winreg.KEY_CREATE_SUB_KEY) as key:
            # 设置暂停天数
            winreg.SetValueEx(key, "FlightSettingsMaxPauseDays", 0, winreg.REG_DWORD, PAUSE_DAYS)

            # 设置暂停截止日期为字符串
            winreg.SetValueEx(key, "PauseFeatureUpdatesEndTime", 0, winreg.REG_SZ, date_str)
            winreg.SetValueEx(key, "PauseQualityUpdatesEndTime", 0, winreg.REG_SZ, date_str)
            winreg.SetValueEx(key, "PauseUpdatesExpiryTime", 0, winreg.REG_SZ, date_str)

            # 额外设置以确保暂停生效
            winreg.SetValueEx(key, "PauseUpdatesStartTime", 0, winreg.REG_SZ, "2020-01-01")
            winreg.SetValueEx(key, "IsPaused", 0, winreg.REG_DWORD, 1)

        # 4. 设置更新策略
        with winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE, POLICIES_PATH) as key:
            winreg.SetValueEx(key, "NoAutoUpdate", 0, winreg.REG_DWORD, 1)
            winreg.SetValueEx(key, "DisableOSUpgrade", 0, winreg.REG_DWORD, 1)
            winreg.SetValueEx(key, "SetDisablePauseUXAccess", 0, winreg.REG_DWORD, 1)

        # 5. 禁用相关任务计划
        TASKS = [
            r"\Microsoft\Windows\UpdateOrchestrator\Reboot",
            r"\Microsoft\Windows\UpdateOrchestrator\USO_UxBroker",
            r"\Microsoft\Windows\UpdateOrchestrator\MusUx_UpdateInterval",
            r"\Microsoft\Windows\UpdateOrchestrator\Maintenance Install"
        ]
        for task in TASKS:
            try:
                subprocess.run(['schtasks', '/Change', '/TN', task, '/DISABLE'],
                               stdout=subprocess.DEVNULL,
                               stderr=subprocess.DEVNULL)
            except:
                pass

        # 6. 阻止Windows Update Medic服务
        try:
            subprocess.run(['sc', 'stop', 'WaaSMedicSvc'],
                           stdout=subprocess.DEVNULL,
                           stderr=subprocess.DEVNULL)
            subprocess.run(['sc', 'config', 'WaaSMedicSvc', 'start=', 'disabled'],
                           stdout=subprocess.DEVNULL,
                           stderr=subprocess.DEVNULL)
        except:
            pass

        return True, date_str

    except Exception as e:
        print(f"操作失败: {e}")
        return False, None

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
hrh123 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
laozhang4201 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hrh123 发表于 2025-8-12 16:52
这代码是你自己写的?我问你1062错误是什么?

点评

@fengyuwuqing 你不在线的话问这个问题即时性不是很强还是算了,你上线后直接回答我这个问题吧:你的代码中所有的except: pass是用来干嘛的? 一般来说,开发中pass要么是用来占位,要么是定义抽象接口或基类时定  详情 回复 发表于 2025-8-12 17:21
hrh123 发表于 2025-8-12 17:21
hrh123 发表于 2025-8-12 16:52
这代码是你自己写的?我问你1062错误是什么?

@fengyuwuqing 你不在线的话问这个问题即时性不是很强还是算了,你上线后直接回答我这个问题吧:你的代码中所有的except: pass是用来干嘛的?

一般来说,开发中pass要么是用来占位,要么是定义抽象接口或基类时定义空方法或空类,又或者是异常处理但不干预。你的代码里看起来是想实现最后的情况?但事实上subprocess.run()默认check=False,也就是不会抛出异常。也就是说,这些except: pass根本不会运行到,因此我比较好奇你写这些try-except的意义是?

免费评分

参与人数 1吾爱币 +2 收起 理由
zxinyun + 2 该说不说 ,有时候需要较较真才能学到东西。

查看全部评分

xfmiao 发表于 2025-8-13 10:39
kobe2024 发表于 2025-8-13 13:43
我小白问下,windows更新很正常吧,电脑漏洞都是通过更新解决,不更新的话,那漏洞就一直存在了。
你这个脚本,实现的目的是什么?收益是什么?
 楼主| fengyuwuqing 发表于 2025-8-13 14:06
hrh123 发表于 2025-8-12 17:21
@fengyuwuqing 你不在线的话问这个问题即时性不是很强还是算了,你上线后直接回答我这个问题吧:你的代码 ...

1. 1062错误是服务尚未启动
2. except:pass 只是异常处理而已,防止报错
 楼主| fengyuwuqing 发表于 2025-8-13 14:08
kobe2024 发表于 2025-8-13 13:43
我小白问下,windows更新很正常吧,电脑漏洞都是通过更新解决,不更新的话,那漏洞就一直存在了。
你这个 ...

在一些场景是不需要更新的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-7-14 05:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表