Skip to content

Home Simplified

mangokingTW edited this page Aug 15, 2026 · 11 revisions

ImeModePersistence

繁體中文 · English · 简体中文 · 日本語 · 한국어

Windows 小工具,控制输入法在程序之间的行为:切换窗口时延续你最后选择的输入模式(中文/英数),并可把指定程序绑定到固定的输入语言 —— 连读不到可执行文件的程序也行,例如有反作弊的全屏游戏。

⚠ 开发阶段,未经签名 —— 请自行评估是否使用

本工具还在开发中,没有代码签名证书。因此 Windows Defender 可能把它判定为病毒并直接删除,已知的检测名称是 Behavior:Win32/Persistence.A!ml

那个检测针对的是「开机时自动启动」所建立的登录任务 —— 任何提供开机自动启动的程序都必须做同样的事,而未签名的程序做这件事就会被行为监控盯上。已向微软提交误判报告,但没有人能保证杀毒软件的判断

源代码、构建流程与发布产物全部公开,由 GitHub Actions 从对应的 tag 构建,你可以自行查看或重建。在此前提下,是否要继续使用请自行决定。

遇到删除时:改用免安装的 zip,或不勾选「开机时自动启动」。

代码签名: 本项目使用 SignPath Foundation 提供的免费代码签名(审核中)。生效前发布文件未签名,见签名政策

安装

Releases 下载三种之一:

文件 说明
...-setup-admin.exe 需要管理员权限。有反作弊的游戏需要这个版本
...-setup-user.exe 不需要管理员权限,但无法控制提权的程序
...-x64.zip 免安装,解压即用

安装时勾选 开机时自动启动。装好就会运行,不需要其他设置。

程序常驻在通知区域 —— 屏幕右下角、时钟左边。Windows 11 默认把新图标收起来,要先点时钟旁的 才看得到。图标是蓝色圆角方块里一个白色的「中」。

两种常见的拦阻:

  • 蓝色的「Windows 已保护你的电脑」→ 点「更多信息 → 仍要运行」。文件未签名,这是信誉警告而非病毒检测。
  • 杀毒软件把安装文件删掉 → 未签名的安装文件常被启发式误判。改用免安装的 zip,功能完全相同。

为什么会需要它

Windows 把输入法状态绑在每个线程上。切到另一个窗口时,中/英转换模式会回到该输入法的默认值 —— 对中文键盘来说就是中文。所以你刚按 Shift 切成英数,换个窗口又打出中文。

「设置 → 时间和语言 → 输入 → 高级键盘设置」里的**「允许我为每个应用程序窗口使用不同的输入法」解决不了这件事**。那个设置管的是「哪一个输入法在作用」,不管「该输入法处于中文还是英数」—— 关掉它之后,切换窗口照样切回中文。

没有任何 Windows 设置能处理转换模式 —— 这是这个工具的第一个目的:让你选的中/英模式跟着你走。

第二个目的是把特定程序固定在某个输入语言,包含连设置都碰不到的那类 —— 使用 raw input 的全屏游戏直接读键盘设备,完全不参与输入法的状态管理,只能从外部处理。Helldivers 2 就是这种。

功能

跨程序维持输入模式(默认开启)

在 A 窗口用中文打字,切到 B 窗口时中文模式会被还原。你在 B 按 Shift 改成英数,切到 C 窗口还原的就是英数 —— 跟着你最近一次的手动切换走。不想要就在右键菜单取消勾选。

程序绑定输入语言

把特定程序固定在某个输入语言:终端永远英文、Word 永远中文。右键菜单 → 程序绑定输入语言…

  • 浏览 选出可执行文件 → 只对那个位置的程序生效
  • 只填文件名(notepad.exe)→ 不管装在哪都适用
  • 用刚才的程序 → 自动填入你开这个窗口之前用的程序
  • 用窗口类别 → 给读不到可执行文件的程序用,见下面的教程
  • 通配符(高级) → 路径带版本号、或窗口类别有生成后缀时,直接在字段输入 glob:*\game.exe(比对路径)或 class-glob:name_*(比对窗口类别),支持 *(任意长度,含路径分隔符)与 ?(单一字符)。精确规则一律优先于通配符。

光标输入指示器(默认关闭)

托盘菜单的在光标旁显示输入指示会在文本光标旁显示一个小徽章,告诉你当前会打出什么(该语言的中文/native 模式)、(输入法切到英数)、或 EN 之类的语言代码。设置会被记住。

徽章会跟着光标、避开自己的窗口。在浏览器地址栏这类字段,因为 Chromium 对外报告的光标位置不可靠,徽章会改显示在该行上方、不遮住文字。

逐步教程

怎么知道它在做什么

把鼠标停在图标上,不要点。停留就会显示状态;点下去会让你想查的程序失去焦点,看到的就不是它了。

意思
当前程序 当前在最前面的程序
绑定语言 规则指定给它的语言
实际语言 它现在真正在用的语言
上次切换尝试 有没有成功

绑定语言与实际语言一致就代表正常。若最后多一行「普通权限 - 看不到提权的程序」,代表本工具没有以管理员身份运行。

左键双击图标可看到更完整的状态,包括开机自动启动当前用的是哪一种机制。

常见问题

「当前程序」显示 class: 开头的东西 正常,不是故障。有些程序(多半是有反作弊的游戏)不允许其他程序读取它的文件位置,这时本工具改用窗口类别辨识它。那串 class:... 就是绑定规则要填的内容。

要不要以管理员身份运行? 要控制本身以管理员身份运行的程序(多数有反作弊的游戏都是)就必须提权 —— Windows 不让权限较低的程序读取权限较高的程序的窗口,连窗口类别都读不到。

开机自动启动一律是普通权限(两个安装版本都一样),因为「开机时自动以管理员身份启动」正是杀毒会判成恶意的持久化行为,本工具刻意不做。要控制提权程序时,用托盘菜单的 以管理员身份重新启动 当场提权(每次开机后、要用之前按一次,过一次 UAC)。

只在意普通程序(跨窗口维持模式、绑定普通程序)的话,完全不需要提权,...-setup-user.exe 就够用。

高级:真的想要提权开机。 本工具刻意不内置(理由如上),但你可以自己用任务计划程序建立一个「登录时、以最高权限」的任务。以管理员打开命令提示符,运行(路径换成实际安装位置;admin 版默认在 C:\Program Files\ImeModePersistence):

schtasks /Create /TN "ImeModePersistence-Elevated" /TR "\"C:\Program Files\ImeModePersistence\ImeModePersistence.exe\"" /SC ONLOGON /RL HIGHEST /F

/RL HIGHEST 让它登录时以最高权限启动且不跳 UAC。建立后,请到托盘菜单把 app 内置的开机时自动启动关掉,否则未提权的 HKCU Run 注册表项会在登录时再开一个未提权实例。移除这个任务:schtasks /Delete /TN "ImeModePersistence-Elevated" /F

绑定的是语言,不是特定输入法 中文、英文、日文可以分别绑定。但同一个语言装了多个输入法(注音和仓颉都算中文)时无法指定其中某一个,会用第一个已安装的。

有些程序切换后又自己变回去 本工具会重试几次,若该程序坚持用自己的设置就先放手再试 —— 从几秒开始,愈抢愈久,最多半分钟,这是刻意的,避免互相抢。切到别的窗口再切回来会立刻重试。

会不会被反作弊误判? 不修改游戏、不读写它的内存、不注入任何东西、不模拟按键。切换的方式是向窗口投递 Windows 标准的「切换输入语言」通知(跟你按 Win+Space 时系统发出的是同一种,窗口可以自行忽略),行不通时改请 Windows 自己切换。完整清单与判断依据在 Helldivers 2 那页。

其他

界面语言跟着 Windows 的显示语言自动选繁体中文或英文。安装程序的画面只有英文。深色模式只作用在窗口标题栏。

Clone this wiki locally