ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

把 Windows 11 任务栏、开始菜单、Alt+Tab 换回 Windows 10 风格:ExplorerPatcher 完整实操

把 Windows 11 任务栏、开始菜单、Alt+Tab 换回 Windows 10 风格:ExplorerPatcher 完整实操

把 Windows 11 任务栏、开始菜单、Alt+Tab 换回 Windows 10 风格:ExplorerPatcher 完整实操

【免费下载链接】ExplorerPatcherThis project aims to enhance the working environment on Windows项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher

ExplorerPatcher 是一个开源工具:它把自己的一份代码(DLL)注入到 explorer.exe 进程里,把 Windows 11 的任务栏、开始菜单和 Alt+Tab 窗口切换器替换成 Windows 10 风格,安装完成即生效,无需反复重启。这篇文章按"选包 → 安装 → 调设置 → 出问题怎么办 → 升级与还原"的顺序,把每一步可能踩的坑都写清楚。

下载之前 30 秒:用构建号锁定该装哪个包

这是全程唯一必须做"作业"的环节。ExplorerPatcher 每个安装版本只适配特定的系统内部构建号,选错了要么装不上,要么装出一堆反常表现。

📌查构建号只需两步:按Win + R,输入winver回车,记下弹窗中的"内部版本号"(形如26100.xxxx)。

对照下表选包(实测清单引自 CHANGELOG.md,当前仓库版本定义见 version.h):

EP 安装包版本主打系统线官方实测过的系统构建
26100.8457.70(当前仓库 HEAD)22H2 至 26H1 / Canary 全区间22621.4317、22631.7079、26100.6899 (ARM64)、26200.8457、26300.8493、26300.8758、28000.2269 (ARM64)、29617.1000
26100.4946.6924H2(26100.x)26100.4946、26100.5074、26200.5751、26220.6682
22631.5335.6822H2 / 23H2 及 24H2 早期22621.3296、22631.5189、22631.5335、26100.3476、26100.4061、26100.4188
22621.4317.6722H2(22621.x)22621.3296、22631.4391、26120.961、26100.1150、26100.2161

记不住表?记规律:EP 版本号的第一段就是它主打的系统线——26100对应 24H2,22621对应 22H2,22631对应 22H2/23H2 及 24H2 过渡期。当前版本 26100.8457.70 的实测范围从 22H2 一直跨到 Canary,大多数用户直接选它最稳妥。

⚠️ 如果你的构建号不在所选包的实测清单里,别硬装:改用相邻版本线对应的包,或等官方补充实测记录。

选安装包文件只看处理器:

处理器选哪个文件
Intel / AMDep_setup.exe
骁龙(Snapdragon)ep_setup_arm64.exe

安装:从双击到看见 Windows 10 任务栏

从项目 Releases 页下载到对应文件后,整个流程只有四步:

  1. 双击运行,程序自动请求管理员权限;
  2. 安装过程中会关闭 explorer.exe 并写入文件,结束后桌面恢复,此时任务栏已经是 Windows 10 风格;
  3. 在任务栏空白处右键,选「属性」,打开设置面板;
  4. 在对应分区里改样式。

装完最常改的三处(都在属性面板内):

分区选项效果
任务栏(Taskbar)Taskbar style选 Windows 10 风格;也可选项目自研的 Windows 10 (ExplorerPatcher)(即 ep_taskbar,自 26100.4946.69 起在 24H2 及 22H2+ 上作为默认)
开始菜单(Start menu)Start menu style换回 Windows 10 经典布局
窗口切换器(Window switcher)Window switcher (Alt+Tab) style换回 Windows 10 的 Alt+Tab

面板里还有两个分区值得知道:天气(Weather)分区提供"清除天气控件本地数据";更新(Updates)分区可配置更新源、检查并安装新版(设置面板代码在 ep_gui/GUI.c)。

⚠️ README 中公开说明:部分功能在部分 Windows 版本上不可用,设置项的可选范围会随系统版本变化。看到某个选项缺失,先别怀疑自己装坏了——这是正常现象。

为什么装完不用再联网下文件

安装器用 C 语言编写(ep_setup/ep_setup.c),所有要写入系统的文件被打包成压缩包内置在安装程序里,并且支持 AES 加密保护(引用了 zlib/minizip 与rijndael-alg-fst.c加密算法)。所以一次下载完成后,安装和更新都不依赖额外资源站。另外从 22631.5335.68 起,安装失败时弹窗会显示出错的代码行号,去社区提问时直接带上这个行号,能省掉大量来回排查。

它到底动了系统的哪些地方

排查故障时,先判断问题出在哪一层。整条链路只有三处机制:

① 注入——把维护团队"驻扎"进 explorer.exe

任务栏和开始菜单都运行在 explorer.exe 进程内。EP 把自己的 DLL 送进这个进程,相当于派驻一支常驻维护队,以后改什么直接就地动手,不用每次都重新申请权限。入口是 ExplorerPatcher/dllmain.c(全文一万三千余行,几乎全部功能挂在这里),任务栏与开始菜单的具体实现分别在 ExplorerPatcher/Taskbar10.cpp 和 ExplorerPatcher/StartMenu.c。

② 挂钩——在系统函数门口设一道"登记处"

EP 拦截对系统函数的调用,改完再放行。这套机制统一封装在 ExplorerPatcher/hooking.h,底层是 SlimDetours 库。26100.4946.69 的更新日志写明,这次换库同时解决了两个问题:ARM64 上与某些挂钩CreateWindowExW的第三方修改项(如部分 Windhawk 修改)的冲突,以及一个"挂钩函数被调用后偶发崩溃、重启才恢复"的小概率缺陷。

③ 注册表监听——每个配置项都装了"传感器"

属性面板里的每项设置最终都写入注册表。ExplorerPatcher/SettingsMonitor.c 中有一条专用线程,为每个要盯的注册表键注册RegNotifyChangeKeyValue值写入通知,通知一触发就回调处理函数直接刷新界面——这就是改完设置不重启资源管理器也能立刻生效的原因。

📌一个已知例外:更新日志明确记载,更改「Start menu style」后需要重启 explorer,"固定到开始屏幕"等操作才能正常。遇到这一项别当"监听失灵"处理。

各模块分工(读源码时按此表入手):

模块职责
ExplorerPatcher/注入 explorer.exe 的主 DLL:dllmain.c(入口)、Taskbar10.cpp、StartMenu.c、SettingsMonitor.c
ep_setup/安装/卸载程序,内置压缩(minizip)与加密资源
ep_gui/属性面板,独立进程,explorer 重启后仍然保留
ep_weather_host/天气控件的宿主进程与数据接口
ep_dwm/DWM 辅助服务,自 22631.5335.68 起改名为ep_dwm_svc.exe以避开 24H2 升级拦截
libs/依赖库:zlib、sws、libvalinet
ExplorerPatcher-L10N/多语言本地化

天气控件由 COM 对象承载,生命周期问题最容易出在这里,dllmain.c 专门为它配了一把临界区锁lock_epw:释放和状态重置都必须在锁内进行,同一时刻只允许一个线程操作,避免多线程竞争引发访问违例。

装完没生效或功能异常:按编号顺序查

每一步都有明确判据,查完一条再进下一条:

  1. 包选对了吗:winver查构建号,回到第一节的对照表确认所选包覆盖它。绝大多数"装完就反常"止步于这一步。
  2. 是否命中公开说明的限制:对照 CHANGELOG.md 的已知问题——
    • ⚠️ 26100.8457.70 的子版本 1 在 26220.8474 (Beta)、26300.8493 (Experimental) 上会导致 10 任务栏和 10 开始菜单崩溃;又因 tile 布局引擎从StartTileData.dll移除,10 开始菜单选项被临时隐藏。70.2 起已恢复。如果你的构建在 26220.8474 以上且看不到该选项,升级到 70.2 或更新即可,这不是安装失败。
    • ⚠️ 22631.5335.68 的说明提到,Win+X 菜单中出现 PowerShell 条目与 Windows Terminal 的安装状态挂钩,条目不符预期时先看这条公开说明。
    • ⚠️ 部分功能在部分 Windows 版本上本就不可用(README 公开说明),设置项可选范围随系统版本变化。
  3. 天气面板报 "Unable to load weather information":多半是数据源侧变更(对应问题 #1334、#4351),26100.4946.69 已修复。处理顺序固定:先通过「属性 → 更新」装到该版本或更新,再去「属性 → 天气」执行"清除天气控件本地数据"。顺序反了白做。
  4. 排查第三方挂钩冲突:你或别的工具是否也挂钩了同一系统函数。SlimDetours 换库修掉的 ARM64CreateWindowExW冲突就是典型。遇到同类现象,先把其他 shell 修改项临时禁用,再逐个恢复定位。
  5. 仍无法定位:先卸载恢复原状(入口见下节),然后带着系统构建号 + EP 安装包版本这两个数字去社区求助,缺一个都算信息不全。

想升级或还原:更新两条路、卸载四个门

更新,二选一:

  • 属性面板「更新(Updates)」分区:配置更新源、检查并安装新版(内置更新机制);
  • 直接下载最新版本的ep_setup.exe/ep_setup_arm64.exe运行,覆盖安装。

卸载,四个入口任选其一,效果完全相同:

入口操作
属性面板任务栏右键「属性」→「卸载」分区
系统入口控制面板「程序和功能」,或设置「应用和功能」
命令行运行ep_setup.exe /uninstall
改名运行把ep_setup.exe改名为ep_uninstall.exe后直接运行

补充两点:卸载时ep_dwm_svc.exe会被强制注销(22631.5335.68 起,无论卸载时它是否在运行);如果你改过任务栏位置等设置,卸载前先在属性面板里改回原值,避免残留注册表项影响系统外观。

附:想从源码自己构建

源码可通过git clone https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher获取;本地构建时先跑 BuildDependenciesRelease.bat(或 Debug 版脚本)把依赖拉全,再打开 ExplorerPatcher.sln 编译。更多细节以官方仓库最新说明为准。

【免费下载链接】ExplorerPatcherThis project aims to enhance the working environment on Windows项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进