本帖最后由 熊猫专用 于 2026-11-15 02:26 编辑
为什么出现这个问题?
事情起因是在研究如何在 PE 上使用 Rime 输入法,于是就在使用 Kuer 版主的 25H2、26H2 PE 测试输入法时发现了鼠标手动点击任务栏上的语言栏切换输入法出现卡死的问题。
起初还以为是输入法问题,但换了别的第三方输入法(除了小小)之后问题还是依旧。
后面刷到 @2013koko 大佬的帖子 Win11PEx64_26300.9457_网络版 & 维护版(2026.10.23) 回帖找到了解决方向。(2026.11.8 更新,顺便修复了下 Shell32 无法正常手动固定任务栏图标问题)
得益于 AI 现在的发展,在其辅助之下总算研究出了在不替换旧版本文件的前提下修复的方案,现分享给大家。
(使用模型:Xiaomi-Mino V2.6 Pro with WorkBuddy 辅助 Codex) 解决方案 复制下面的批处理命令运行即可。
注意: 1️⃣编码建议使用 ANSI+CR LF,避免出现运行失败的问题; 2️⃣需要依赖 binmay.exe 来修改十六进制,这个可以反而从 WimBuilder2 提取出来使用。 3️⃣Shell32 每个小版本修改的十六进制的方案是不同的,所以我的方案目前不能保证都能通用,但是可以通过将命令及 .dll 喂给 AI 尝试进行分析并修复。 InputSwitch.dll —— 修复高版本内核手动切换输入法时卡死问题 - echo 修复高版本内核手动切换输入法时卡死问题
- binmay.exe -U "%X%\Windows\System32\InputSwitch.dll" -s "85 C0 78 FF C6
- 83 21 01 00 00 00" -S "FF FF FF 00 FF FF FF FF FF FF FF" -r "85 C0 EB FF
- C6 83 21 01 00 00 00" -R "FF FF FF 00 FF FF FF FF FF FF FF"
- binmay.exe -U "%X%\Windows\System32\InputSwitch.dll" -s "48 8B D9 75 FF
- 83 79 10 07 75 FF" -S "FF FF FF FF 00 FF FF FF FF FF 00" -r "48 8B D9 EB
- FF 83 79 10 07 75 FF" -R "FF FF FF FF 00 FF FF FF FF FF 00"
- echo 修复 26100.9278+ / 28000.2804+ 内核手动切换输入法时卡死问题
- ::26100.9278+
- binmay.exe -u "%X%\Windows\System32\InputSwitch.dll" -s "00 10 00 00 4A
- 88 0D 00 02 00 60 41 00 00 04 00" -S "00 10 00 00 C0 FB 0D 00 02 00 60
- 41 00 00 04 00" -r "00 10 00 00 4A 88 0D 00 02 00 60 41 00 00 04 00" -R
- "00 10 00 00 C0 FB 0D 00 02 00 60 41 00 00 04 00"
- ::28000.2804+
- binmay.exe -U "%X%\Windows\System32\InputSwitch.dll" -s "00 10 00 00 BB 8C 0D 00 02 00 60 41 00 00 04 00" -S "00 10 00 00 C0 FB 0D 00 02 00 60
- 41 00 00 04 00" -r "00 10 00 00 A4 8D 0D 00 02 00 60 41 00 00 04 00" -R "00 10 00 00 A4 8D 0D 00 02 00 60 41 00 00 04 00"
- echo 修复 22621.5840 内核手动切换输入法时顿一下问题(因为 22631 虽然也有这个问题,但不至于将整个 Explorer 卡死)
- binmay.exe -U "%X%\Windows\System32\InputSwitch.dll" -s "48 8B CB E8 E0 02 00 00 8B F0" -S "48 8B CB E8 E0 02 00 00 8B F0" -r "48 8B CB B8 05 40 00 80 8B F0" -R "48 8B CB B8 05 40 00 80 8B F0"
- binmay.exe -U "%X%\Windows\System32\InputSwitch.dll" -s "84 C0 0F 84 A7 00 00 00 80 BB 21 01 00 00 00" -S -r "84 C0 E9 9A 00 00 00 90 80 BB 21 01 00 00 00" -R "84 C0 E9 9A 00 00 00 90 80 BB 21 01 00 00 00"
- binmay.exe -U "%X%\Windows\System32\InputSwitch.dll" -s "00 10 00 00 8E 78 0E 00 02 00 60 41 00 00 04 00" -S "00 10 00 00 8E 78 0E 00 02 00 60 41 00 00 04 00" -r "00 10 00 00 E8 AB 0D 00 02 00 60 41 00 00 04 00" -R "00 10 00 00 E8 AB 0D 00 02 00 60 41 00 00 04 00"
复制代码 Shell32 任务栏固定- echo 修复-任务栏固定(26x00)
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "84C00F8462010000" -r "84C0E97101000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4C2438E89230B8FF488D442438488944" -r "4E18488B01448BCD4C8B466033D2488B"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4C2438E882FBB7FF488D442438488944" -r "4E18488B01448BCD4C8B466033D2488B"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "24204C8D0D318E1B0033D2448D4204" -r "8080000000E848DA1400E9A7000000"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "24204C8D0D01A61B0033D2448D4204" -r "8080000000E878F21400E9A7000000"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "24204C8D0DD1A51B0033D2448D4204" -r "8080000000E878F21400E9A7000000"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "ED0F842906" -r "ED0F84C101"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "488D15BCE62C00E833160200488B48084885C90F842A04000039390F86220400" -r "E93E0400004981FE000001007219488D4E104C89F24C8D442449E8F43C2D0041"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "488D15BC392D00E8232D0200488B48084885C90F842A04000039390F86220400" -r "E93E0400004981FE000001007219488D4E104C89F24C8D442449E8F48F2D0041"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "0048897DE048897DE848897DF04983CC" -r "89C7E91C04000041BF57000780E91104"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "FF48397C2448" -r "000090909090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "498B0424488B7858488D4C2448E8D140" -r "E99600000041F6C701740A4D89C8E8E8"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "498B0424488B7858488D4C2448E8C1AF" -r "E99600000041F6C701740A4D89C8E8E8"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "BAFF4883C8FF48894424504889442458" -r "C8FFFFEB05E80DC7FFFFE9E9FEFFFF41"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "B9FF4883C8FF48894424504889442458" -r "C8FFFFEB05E80DC7FFFFE9E9FEFFFF41"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4C8D442448488B542430498BCC488BC7" -r "F6C7017417498D47FF488B5424304889"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "E8DE0915008BF885C0792BBA17070000" -r "10488364243000E9890000004531C048"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "E80E2215008BF885C0792BBA17070000" -r "10488364243000E9890000004531C048"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4C8D050CEF1B00448BCF" -r "8B542430E97400000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4C8D052C001C00448BCF" -r "8B542430E97400000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4C8D05FCFF1B00448BCF" -r "8B542430E97400000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "CBE81FC8FFFF" -r "CBE9FD000000"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4533C0488B542430488BCE" -r "E965FFFFFF909090488BCE"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "BA1E070000EB8B" -r "E9F6FEFFFF9090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "0010000083C47A000200604100000400" -r "00100000F19A7A000200604100000400"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "0010000078037C000200604100000400" -r "00100000384E7C000200604100000400"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "00100000AA7D7C000200604100000400" -r "001000009BF87B000200604100000400"
- echo 修复-任务栏固定(22631)
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "C00F8402030000" -r "C0E90303000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "BAFF84C00F84C0000000" -r "BAFF84C0E9C100000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "BBFF84C0740B" -r "BBFF84C0EB0B"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "001000001CFD87000200604100000400" -r "0010000089D787000200604100000400"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "0F84FF010000488D" -r "E92E03000090488D"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "8364243800488D4C2438E83A94ADFF48" -r "8D4E1831D24C8B46604189E9E8FCC6FF"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "894424204C8D0DBA291900" -r "FFE9D10000009090909090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "F60F84B106" -r "F60F84FE01"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "488D1508B6FFFFE8274A000033D2488B" -r "E9890400004981FF000001007219498D"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "C8E871BDB1FF84C00F84700400004889" -r "4D104C89FA4C8D442449E8A016000041"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "75E0488975E8488975F04983CD" -r "89C4E96704000041BC57000780"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "FF4839742448" -r "E95C04000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "498B0424488B5858488D4C2450E80255" -r "E9A100000041F6C701740A4D89C8E865"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "B3FF4883C8FF48894424584889442460" -r "C1FFFFEB05E886BEFFFFE9E3FEFFFF41"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "FEFFFF4149BA70A9D730C3B691AE4C8D" -r "FEFFFF41F6C7017417498D47FF488B54"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "FF488B5444245048" -r "FF488B5424304889"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "8B542430498BCC488BC3FF15ACDF1700" -r "10488364243000E9940000004531C048"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "D885C0792BBA27070000" -r "542430E97F0000009090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "CBE89EBFFFFF8B" -r "CBE9030100008B"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4533C0488B542430488BCF" -r "E95AFFFFFF909090488BCF"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "BA2E070000EB8B" -r "E9E8FEFFFF9090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "0010000078C58C000200604100000400" -r "00100000A1C78C000200604100000400"
- echo 修复-任务栏固定(28000)
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "0F846B010000488D4B" -r "E97A01000090488D4B"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "C744243800000000488D4C2438E833DA" -r "8D4E1831D24C8B46604189E9E8C8C4FF"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "B7FF488D442438" -r "FFE9BD00000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "ED0F842A06" -r "ED0F84C101"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "488D151A322D00E8D5320200488B4808" -r "E93F0400004981FE000001007219488D"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4885C90F842B04000039390F86230400" -r "4E104C89F24C8D442449E8128D2D0041"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "0048897D2048897D2848897D304983CC" -r "89C7E91D04000041BF57000780E91204"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "FF48397C2448" -r "000090909090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "498B0424488B7858488D4C2450E8AC8E" -r "E99600000041F6C701740A4D89C8E81F"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "C2FF4883C8FF48894424584889442460" -r "C3FFFFEB05E838C1FFFFE9E0FEFFFF41"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4C8D442450488B542438498BCC488BC7" -r "F6C7017417498D47FF488B5424384889"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "E8E93715008BF885C0792BBA17070000" -r "10488364243800E9890000004531C048"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4C8D05BF241C00448BCF" -r "8B542438E97400000090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "CBE853C2FFFF" -r "CBE906010000"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "4533C0488B542438488BCEE801" -r "E965FFFFFF909090488BCEE801"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "BA1E070000EB8B" -r "E9EDFEFFFF9090"
- binmay.exe -U "%X%\Windows\System32\shell32.dll" -s "001000000BF87B000200604100000400" -r "00100000AA407C000200604100000400"
复制代码
是如何解决的? 一开始使用 AI 拿新旧两版本的 dll 对比后,看了报告发现了加依赖和注册表的体积会太大,有点不符合修复的目的了,于是就想到了对比修改 DLL 的二进制文件这条路。 没想到最终的思路是对的,对比旧版本 .dll 来修改新版本 .dll 之后的二进制文件之后,真能正常切换且不会导致 Explorer 卡死了。 (目前账号权限原因无法上传动图,图床又怕加载不出来 .gif,但测试了几回已经没发现卡死的情况。) 也就是说,目前的解决方案就可以在不增加额外依赖的前提下,只修改系统文件,来完美地修复这个问题了,还是不得不感慨 AI 的进步。
相关问题 Q&A Q:为什么小小输入法不受切换输入法卡死的影响? A:因为小小输入法的思路与传统输入法的加载方式不同,小小输入法是可以不加载 ctfmon.exe 来实现打字,而大部分 IME 都依赖语言栏来切换,所以修复是必须的。
Q:为什么 22631 也提供修复输入法的修复补丁了? A:因为其实 22631 虽然也有这个问题,虽然不至于将整个 Explorer 卡死,但强迫症想修复的话还是可以试试的。
Q:我为什么不用键盘快捷键切换,一切都正常,为什么还要修复手动切换呢? A:没键盘设备的环境下就有必要修复了,且大部分情况下我还是会有习惯手动切换输入法的情况。
Q:为什么 Shell32 修复固定的十六进制文件这么长? A:没办法,目前的思路就是通过对比新旧两版本的差异然后做修改补充的,虽然有点蠢,但进测试发现是可以正常使用的(2013Koko 的 26300.9457 及 蜂鸟 PE 测试均通过!)我这里欢迎各位积极探索出新的修复方案,争取让固定十六进制文件能缩短点。
Q:使用我的解决方案要不要注明帖子链接? A:因为是使用 AI 编写的东西,所以你也可以不需要署名和考虑商用相关问题。 一方面也是希望我的解决方案能够给大家提供帮助,另一方面这也是尝试使用 AI 修复 PE 问题的一个实践,可以参考下如何解决。
...(后补)
后记 希望我的解决方案能够给大家提供帮助,第一次使用 AI 解决 PE 上的痛点问题,如果有问题的话欢迎跟帖反馈~
PanDaTech 2026.11.8
|