ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ExplorerPatcher:把 Windows 11 换回 Windows 10 任务栏、开始菜单与窗口切换器

ExplorerPatcher:把 Windows 11 换回 Windows 10 任务栏、开始菜单与窗口切换器 ExplorerPatcher把 Windows 11 换回 Windows 10 任务栏、开始菜单与窗口切换器【免费下载链接】ExplorerPatcherThis project aims to enhance the working environment on Windows项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher你刚把系统升级到 Windows 11。右键任务栏老任务栏设置选项不在菜单里按 Win 键弹出来的是居中大块头开始菜单按 AltTab窗口缩略图也换了模样。三样全不在你习惯的位置。ExplorerPatcher 就是来解决这件事的。它是一个开源工具做法是往 explorer.exe 里注入一个 DLL用 Windows 10 风格的实现替换 Windows 11 的任务栏、开始菜单和窗口切换器顺带提供经典命令栏、天气控件等附加功能。这篇文章不急着让你动手装。先花一分钟做系统自检避免选错包再走最短的安装路径看首次进设置该动哪几项然后拆开讲它底层改了什么最后留出岔子怎么排查、怎么退。安装前的系统自检构建号决定你拿哪个包要核对三件事按顺序来系统内部构建号。WinR 输入 winver弹出的窗口里有类似版本 24H2内部版本 26100.xxxx的字样长数字才是关键。处理器架构。x64 包Intel/AMD和 ARM64 包骁龙是两个独立的安装器不通用。系统版本线。22H2 对应 22621.x23H2 对应 22631.x24H2 及以后是 26100.x 起。安装包的主版本号与系统构建线严格对应。仓库 version.h 里当前的主版本是 26100.8457.70.4。对照表如下安装包主版本对应系统实测构建见 changelog26100.8457.7024H2 及以后26100.x 起22621.4317、22631.7079、26100.6899、26200.8457、26300.8493、28000.2269、29617.100026100.4946.6924H226100.x26100.4946、26100.5074、26200.5751、26220.668222631.5335.6822H2/23H222621/22631.x兼顾 24H2 早期22621.3296、22631.5189、22631.5335、26100.3476、26100.4061、26100.418822621.4317.6722H222621.x更旧的 22H2 构建明细查 changelog这里有个坑别无脑拿最新版安装包你的构建号未必在它的实测名单里。changelog 每一节开头都列了实测构建那是项目自己的承诺范围不在名单里不是不能用但真出了问题第一嫌疑是版本不匹配。安装的最短路径到项目 Releases 页下载安装器x64Intel/AMD机器用ep_setup.exe骁龙机器用ep_setup_arm64.exe。双击运行。程序会自动请求提权确认 UAC 弹窗。安装过程会关闭 explorer.exe桌面闪一下别慌它只是短暂下班。桌面回来后任务栏已经是 Windows 10 样式。在任务栏右键菜单里打开属性进入设置面板。安装器为什么能这么自给自足它用 C 语言写成全文件 1757 行见 ep_setup/ep_setup.c。整套安装资源是内置在程序里的压缩数据基于 minizip运行后不需要联网拉文件解包后直接写盘全程离线完成。第一次进设置只动这几处属性面板里的项目不少真正决定像不像 Windows 10的是下面三项设置项可选值效果任务栏 / 任务栏样式Windows 10Windows 10 (ExplorerPatcher)前者复用系统原生实现后者是项目自研的 ep_taskbar开始菜单 / 开始菜单样式Windows 10居中块状菜单换回传统布局窗口切换器 / AltTab 样式Windows 10AltTab 换回 10 风格的缩略图排布两条提醒Windows 11 22H2 及以上自研的 ep_taskbar 已经是默认26100.4946.69 版本起改的所以Windows 10 (ExplorerPatcher)这一项大概率是生效态。项目文档明确提示部分功能在某些 Windows 版本上不可用。选项的可选范围取决于你的构建某一项不见了不是 bug。拆开看它到底动了系统什么函数挂钩在目标函数前面设一个中转站想象快递公司的干线要查验某条线路上的每个包裹不用守在发货源头而是在线路上设个中转站包裹先过站、被检查甚至重新贴单再放行去原定目的地。函数挂钩就是这个思路——系统函数是干线钩子是中转站。项目把这套机制统一封装在 66 行的 ExplorerPatcher/hooking.h 里核心就一处调用// 把目标函数改接到钩子函数上 // 实际动作由 SlimDetoursInlineHook 一次完成 HRESULT hr SlimDetoursInlineHook(TRUE, target_func, hook_func); return SUCCEEDED(hr) ? 0 : hr;这对你意味着什么多个工具同时挂钩同一个函数就可能打架。changelog 里 26100.4946.69 版本明确记载换用 SlimDetours 修掉了 ARM64 上与第三方挂钩 CreateWindowExW 的修改项的冲突还修了钩子函数在重启前偶发致崩的低概率问题。注册表监听改完设置几秒内界面就动你在属性面板改的每一项最终都写进注册表。项目不是轮询注册表而是对每个被监听的键注册一个值被写入通知再派一条专用线程守候。// 给注册表键登记值刚被写入事件 // 事件触发后线程被唤醒随即回调对应处理函数 RegNotifyChangeKeyValue( hKey, // 被监听的注册表键 FALSE, REG_NOTIFY_CHANGE_LAST_SET, // 只盯写入动作 hEvent, TRUE // 异步通知不阻塞调用方 ); // 线程对多个事件同时等待谁先触发就处理谁 DWORD dwRes WaitForMultipleObjects(size, handles, FALSE, INFINITE);完整实现在 ExplorerPatcher/SettingsMonitor.c全文件 122 行。这对你意味着什么设置改完直接生效不必重启资源管理器去应用。对象生命周期给天气控件上一把共用物锁天气控件是跑在 explorer.exe 进程里的 COM 对象代码里叫 epw多个线程都可能碰到它。释放和状态重置一旦撞车就是访问违例。项目的做法很直白一把临界区锁 lock_epw罩住所有对它的操作。// 计算控件按钮尺寸前先试着拿锁 // 别的线程正占着就跳过绝不裸碰 epw BOOL bHasLocked TryEnterCriticalSection(lock_epw); if (bHasLocked epw) { // ...按当前显示的查看模式调整宽度... LeaveCriticalSection(lock_epw); }以上这些逻辑都落在注入主模块里入口 dllmain.c 一共 13426 行。这对你意味着什么天气控件怎么开关都不会无缘无故带崩资源管理器这是项目稳定性设计的典型样本。出岔子了按顺序排查再干净退出排查按这个顺序走每一步比前一步可能性低winver确认系统内部构建号回头核对安装包选对了没有。装不上/装完就崩里版本不匹配占大多数。翻 CHANGELOG.md 里你装的版本节首的实测构建清单和逐条修复记录你碰到的现象很可能被写在那里。天气控件报 Unable to load weather information 的话那是数据源侧变更引发的故障对应日志里的 #1334、#435126100.4946.69 起修复。先更新再在属性 → 天气里执行清除天气控件本地数据。检查是否有其他第三方工具挂钩了同一个系统函数。这类冲突在日志里有先例ARM64 那次 SlimDetours 修复就是其中之一。仍定位不到先用下面的方式恢复原状再带着系统构建号和 ExplorerPatcher 版本号去项目社区提问。卸载有四条等价途径任选其一任务栏属性面板里的卸载分区控制面板程序和功能或设置里的应用和功能给 ep_setup.exe 传 /uninstall 参数运行把 ep_setup.exe 改名成 ep_uninstall.exe 再双击最有仪式感的一条。程序也带内置更新机制属性里的更新分区负责检查、配置和安装新版本。读源码从哪下手先克隆下来git clone https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher目录/文件职责ExplorerPatcher/注入 explorer.exe 的主模块dllmain.c13426 行、Taskbar10.cpp、StartMenu.c 等ExplorerPatcher/hooking.h挂钩统一封装底层 SlimDetoursExplorerPatcher/SettingsMonitor.c设置注册表监听线程122 行ep_setup/安装/卸载程序内置压缩资源与 Rijndael 加密ep_weather_host/天气控件宿主进程与数据接口ep_dwm/dwm 相关辅助服务24H2 起更名 ep_dwm_svc.exe 以避开升级拦截libs/依赖库zlib、sws、libvalinetExplorerPatcher-L10N/多语言本地化构建侧先跑批处理脚本编依赖、再编主工程BuildDependenciesDebug.bat 与 BuildDependenciesRelease.bat解决方案文件是 ExplorerPatcher.sln。收尾前把这四条过一遍winver查出系统构建号对照版本表再下载安装包装完先动三项任务栏样式、开始菜单样式、AltTab 样式出问题先查你版本的 changelog 和实测构建清单再怀疑环境想回退时四条等价卸载途径任选都能把系统还原。【免费下载链接】ExplorerPatcherThis project aims to enhance the working environment on Windows项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表