- SignalDesk2026-09-14
Original Summary
新版微信UI太逆天了,让codex做了一个禁用windows更新的工具, 希望对你有所帮助 使用
autoit-tool,源码和编译的exe在附件,可自行编译 附件: wechat-update-blocker.zip (580.0 KB) #cs ============================================================ 微信更新屏蔽工具 v1.3.0 (WeChat Update Blocker) 用途:屏蔽微信自动更新。 微信可能安装在非 C 盘,故自动探测安装目录, 也支持「浏览...」手动指定。 屏蔽动作: 1. taskkill 结束正在运行的更新进程 2. icacls 拒绝 Users 组执行更新程序(Read & eXecute) 3. 锁定 xwechat 更新目录,阻止释放和替换更新器 4. schtasks 禁用微信更新计划任务 恢复动作: 1. icacls /remove:d 撤销文件及目录的拒绝权限 2. schtasks 启用微信更新计划任务 与参考 bat 脚本的差异: · 计划任务用"禁用"而非"删除",以便恢复功能可真正撤销 · 更新程序路径由扫描得出,不硬编码 C 盘 ============================================================ #ce #RequireAdmin #NoTrayIcon #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #include <MsgBoxConstants.au3> #include <Misc.au3> ; ─── 配置 ────────────────────────────────────────────────── Global Const $APP_NAME = "微信更新屏蔽工具" Global Const $APP_VERSION = "1.3.0" ; 程序图标:编译后从自身 exe 资源取,开发运行时从脚本目录取 Global $g_sAppIcon = @Compiled ? @AutoItExe : @ScriptDir & "\wechat-update-blocker.ico" ; 状态图标:编译时嵌入 exe,运行时释放到临时目录(保证单文件交付) Global Const $ICON_BLOCK = @TempDir & "\wechat-update-blocker\state-blocked.ico" Global Const $ICON_ALLOW = @TempDir & "\wechat-update-blocker\state-allowed.ico" DirCreate(@TempDir & "\wechat-update-blocker") FileInstall("state-blocked.ico", $ICON_BLOCK, 1) FileInstall("state-allowed.ico", $ICON_ALLOW, 1) ; 注意:不可命名为 $SID_USERS —— 该名字已被 SecurityConstants.au3 占用 Global Const $ACL_SID_USERS = "S-1-5-32-545" ; Users 组 SID(icacls 需 前缀) Global Const $SCAN_DEPTH = 2 ; 更新程序扫描递归深度 ; 微信 4.x/xwechat 在此处释放插件更新器,并通过 update 目录替换程序。 Global $g_aXWeChatProtectRel[2] = [ _ "XPlugin\Plugins\WeixinUpdate", _ "update" ] ; 微信更新计划任务候选名 Global $g_aTasks[4] = [ _ "\Tencent\WeChatUpdate", _ "\Tencent\WeixinUpdate", _ "\WeChatUpdate", _ "\WeixinUpdate" ] ; 常见安装位置(拼接在盘符之后) Global $g_aRelPaths[8] = [ _ "Tencent\WeChat", _ "Tencent\Weixin", _ "Program Files\Tencent\WeChat", _ "Program Files (x86)\Tencent\WeChat", _ "Program Files\Tencent\Weixin", _ "Program Files (x86)\Tencent\Weixin", _ "Software\Tencent\WeChat", _ "Apps\Tencent\WeChat" ] ; 每用户安装位置(拼接在 %LOCALAPPDATA% 之后) Global $g_aUserPaths[2] = [ _ "Tencent\WeChat", _ "Programs\Tencent\WeChat" ] ; ─── 浅色主题 ────────────────────────────────────────────── Global Const $CLR_BG = 0xF0F0F0 Global Const $CLR_ACCENT = 0x005A9E Global Const $CLR_HEADER = 0x0067B1 Global Const $CLR_PANEL = 0xFFFFFF Global Const $CLR_LINE = 0xD9E2EA Global Const $CLR_GREEN = 0x107C10 Global Const $CLR_RED = 0xC42B1C Global Const $CLR_TEXT = 0x202020 Global Const $CLR_GRAY = 0x707070 Global Const $CLR_FONT = "Microsoft YaHei UI" ; ─── GUI 控件 ────────────────────────────────────────────── Global $hGUI = 0 Global $idRadioAllow, $idRadioBlock, $idChkTask Global $idInpDir, $idBtnBrowse Global $idLblUpdater, $idIconState, $idLblState Global $idBtnApply, $idBtnRescan ; ─── 运行时状态 ──────────────────────────────────────────── Global $g_aUpdaters[0] ; 扫描到的更新程序完整路径 Global $g_aProtectedDirs[0] ; 已存在、需锁定的 xwechat 更新目录 ; ─── 单实例 ──────────────────────────────────────────────── If _Singleton("WeChatUpdateBlocker_Singleton", 1) = 0 Then Exit _CreateGUI() _Rescan() While 1 Local $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE GUIDelete($hGUI) Exit Case $idBtnBrowse Local $sDir = FileSelectFolder("选择微信安装目录(含 WeChat.exe / Weixin.exe 的目录)", "", 1) If Not @error And $sDir <> "" Then GUICtrlSetData($idInpDir, $sDir) _Rescan($sDir) EndIf Case $idBtnRescan _Rescan() Case $idBtnApply _DoApply() EndSwitch WEnd ; ============================================================ ; GUI ; ============================================================ Func _CreateGUI() ; 440 × 440 的正方形窗口:信息区、操作区和底部按钮形成稳定的三段布局。 $hGUI = GUICreate($APP_NAME & " v" & $APP_VERSION, 440, 440, -1, -1) GUISetBkColor($CLR_BG) GUISetFont(9, 400, 0, $CLR_FONT) If FileExists($g_sAppIcon) Then GUISetIcon($g_sAppIcon) ; ── 顶部品牌与状态 ── GUICtrlCreateLabel("", 0, 0, 440, 94) GUICtrlSetBkColor(-1, $CLR_HEADER) $idIconState = GUICtrlCreateIcon($ICON_ALLOW, -1, 24, 24, 40, 40) GUICtrlCreateLabel($APP_NAME, 80, 20, 290, 24) GUICtrlSetFont(-1, 14, 700, 0, $CLR_FONT) GUICtrlSetColor(-1, 0xFFFFFF) GUICtrlSetBkColor(-1, $CLR_HEADER) $idLblState = GUICtrlCreateLabel("检测中...", 82, 49, 310, 20) GUICtrlSetFont($idLblState, 9, 400, 0, $CLR_FONT) GUICtrlSetColor($idLblState, 0xDCEEFF) GUICtrlSetBkColor($idLblState, $CLR_HEADER) ; ── 更新策略卡片 ── GUICtrlCreateLabel("更新策略", 20, 112, 160, 18) GUICtrlSetFont(-1, 9, 700, 0, $CLR_FONT) GUICtrlSetColor(-1, $CLR_ACCENT) GUICtrlCreateLabel("", 20, 136, 400, 54) GUICtrlSetBkColor(-1, $CLR_PANEL) $idRadioAllow = GUICtrlCreateRadio("允许更新", 40, 153, 88, 20) GUICtrlSetColor($idRadioAllow, $CLR_TEXT) GUICtrlSetBkColor($idRadioAllow, $CLR_PANEL) $idRadioBlock = GUICtrlCreateRadio("屏蔽更新", 145, 153, 88, 20) GUICtrlSetColor($idRadioBlock, $CLR_TEXT) GUICtrlSetBkColor($idRadioBlock, $CLR_PANEL) GUICtrlSetState($idRadioBlock, $GUI_CHECKED) $idChkTask = GUICtrlCreateCheckbox("禁用更新计划任务", 250, 153, 144, 20) GUICtrlSetColor($idChkTask, $CLR_TEXT) GUICtrlSetBkColor($idChkTask, $CLR_PANEL) GUICtrlSetState($idChkTask, $GUI_CHECKED) ; ── 安装目录 ── GUICtrlCreateLabel("微信安装目录", 20, 210, 200, 18) GUICtrlSetFont(-1, 9, 700, 0, $CLR_FONT) GUICtrlSetColor(-1, $CLR_ACCENT) $idInpDir = GUICtrlCreateInput("", 20, 235, 302, 28) GUICtrlSetFont($idInpDir, 9, 400, 0, $CLR_FONT) GUICtrlSetBkColor($idInpDir, $CLR_PANEL) $idBtnBrowse = GUICtrlCreateButton("浏览...", 332, 235, 88, 28) ; ── 防护对象 ── GUICtrlCreateLabel("已检测到的防护对象", 20, 284, 240, 18) GUICtrlSetFont(-1, 9, 700, 0, $CLR_FONT) GUICtrlSetColor(-1, $CLR_ACCENT) $idLblUpdater = GUICtrlCreateLabel("", 20, 309, 400, 68) GUICtrlSetFont($idLblUpdater, 8, 400, 0, $CLR_FONT) GUICtrlSetColor($idLblUpdater, $CLR_TEXT) GUICtrlSetBkColor($idLblUpdater, $CLR_PANEL) ; ── 底部操作(整体居中) ── $idBtnApply = GUICtrlCreateButton("应用设置", 84, 396, 130, 30) GUICtr- 情报分类:技术学习与提效
- 分类依据:内容涉及技术、AI、软件工具或工程实践
- 信息来源:服务器 / LINUX DO - 最新话题
- 发布时间:2026/9/14 16:35:04
- No replies yet