把 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.69 | 24H2(26100.x) | 26100.4946、26100.5074、26200.5751、26220.6682 |
| 22631.5335.68 | 22H2 / 23H2 及 24H2 早期 | 22621.3296、22631.5189、22631.5335、26100.3476、26100.4061、26100.4188 |
| 22621.4317.67 | 22H2(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 / AMD | ep_setup.exe |
| 骁龙(Snapdragon) | ep_setup_arm64.exe |
安装:从双击到看见 Windows 10 任务栏
从项目 Releases 页下载到对应文件后,整个流程只有四步:
- 双击运行,程序自动请求管理员权限;
- 安装过程中会关闭 explorer.exe 并写入文件,结束后桌面恢复,此时任务栏已经是 Windows 10 风格;
- 在任务栏空白处右键,选「属性」,打开设置面板;
- 在对应分区里改样式。
装完最常改的三处(都在属性面板内):
| 分区 | 选项 | 效果 |
|---|---|---|
| 任务栏(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:释放和状态重置都必须在锁内进行,同一时刻只允许一个线程操作,避免多线程竞争引发访问违例。
装完没生效或功能异常:按编号顺序查
每一步都有明确判据,查完一条再进下一条:
- 包选对了吗:
winver查构建号,回到第一节的对照表确认所选包覆盖它。绝大多数"装完就反常"止步于这一步。 - 是否命中公开说明的限制:对照 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 公开说明),设置项可选范围随系统版本变化。
- ⚠️ 26100.8457.70 的子版本 1 在 26220.8474 (Beta)、26300.8493 (Experimental) 上会导致 10 任务栏和 10 开始菜单崩溃;又因 tile 布局引擎从
- 天气面板报 "Unable to load weather information":多半是数据源侧变更(对应问题 #1334、#4351),26100.4946.69 已修复。处理顺序固定:先通过「属性 → 更新」装到该版本或更新,再去「属性 → 天气」执行"清除天气控件本地数据"。顺序反了白做。
- 排查第三方挂钩冲突:你或别的工具是否也挂钩了同一系统函数。SlimDetours 换库修掉的 ARM64
CreateWindowExW冲突就是典型。遇到同类现象,先把其他 shell 修改项临时禁用,再逐个恢复定位。 - 仍无法定位:先卸载恢复原状(入口见下节),然后带着系统构建号 + 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),仅供参考