PowerShell 设置 Windows10 输入法顺序
系统自带的输入法设置不正常
Windosw10 在安装使用一些比较旧的输入法的时候,在设置里面添加删除输入法都不太正常,比如极点五笔,一般是选项呈现灰色状态,无法添加或者删除。
一般要借助搜狗输入自带的输入法管理器之类的工具才能更改。
其实可以直接使用 PowerShell 来对输入法添加删除、修改顺序。
核心语句和机制
核心语句是 New-WinUserLanguageList
、Get-WinUserLanguageList
可以先用搜狗之类带的输入法管理器把输入法排得着不多之后,用 Get-WinUserLanguageList
来获取当前的输入法配置。
LocalizedName
项就是设置里面添加的语言
InputMethodTips
项就是输入法的顺序
其实本质上还是注册表,但是直接改注册表后重启资源管理器是不生效的,不知道是哪部分负责的,重启应该能生效吧,所以还是直接用 PowerShell 吧。
中文(简体,中国)
语言的注册表路径:HKEY_CURRENT_USER\Control Panel\International\User Profile\zh-Hans-CN
注意看注册表 “数据 “里面的数字,顺序和 PowerShell 里面得到的顺序、以及系统里面的输入法排序是一样的。
常用的输入法的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
0804:{E7EA138E-69F8-11D7-A6EA-00065B844310}{E7EA138F-69F8-11D7-A6EA-00065B844311}
0804:{E7EA138F-69F8-11D7-A6EA-00065B844310}{E7EA1390-69F8-11D7-A6EA-00065B844311}
0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411F-A5AC-CA038EC515D7}
0804:{6A498709-E00B-4C45-A018-8F9E4081AE40}{82590C13-F4DD-44F4-BA1D-8667246FDF8E}
0804:E0010804
0404:E0010404
|
脚本代码
下面直接放脚本,还是比较好理解的。
因为公司里面有两种语言的系统,所以做了判断。
脚本主要作用就是按顺序添加:搜狗拼音、搜狗五笔、极点五笔、纯英文输入 这 4 个输入法。
极点五笔比较特殊,在繁体系统下面是添加在 中文(繁体,台湾)
这个语言里面的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
if ((Get-WinSystemLocale).Name -eq "zh-CN") { $UserLanguageList = New-WinUserLanguageList -Language "zh-Hans-CN" $UserLanguageList.Add("en-US")
$UserLanguageList[0].InputMethodTips.Clear() $UserLanguageList[0].InputMethodTips.Add('0804:{E7EA138E-69F8-11D7-A6EA-00065B844310}{E7EA138F-69F8-11D7-A6EA-00065B844311}') $UserLanguageList[0].InputMethodTips.Add('0804:{E7EA138F-69F8-11D7-A6EA-00065B844310}{E7EA1390-69F8-11D7-A6EA-00065B844311}') $UserLanguageList[0].InputMethodTips.Add('0804:E0010804')
Set-WinUserLanguageList -LanguageList $UserLanguageList -Force } else { $UserLanguageList = New-WinUserLanguageList -Language "zh-Hans-CN" $UserLanguageList.Add("zh-Hant-TW") $UserLanguageList.Add("en-US")
$UserLanguageList[0].InputMethodTips.Clear() $UserLanguageList[0].InputMethodTips.Add('0804:{E7EA138E-69F8-11D7-A6EA-00065B844310}{E7EA138F-69F8-11D7-A6EA-00065B844311}') $UserLanguageList[0].InputMethodTips.Add('0804:{E7EA138F-69F8-11D7-A6EA-00065B844310}{E7EA1390-69F8-11D7-A6EA-00065B844311}') $UserLanguageList[1].InputMethodTips.Clear() $UserLanguageList[1].InputMethodTips.Add('0404:E0010404')
Set-WinUserLanguageList -LanguageList $UserLanguageList -Force }
|
顺便给一个输入法不见了的处理 bat 脚本,有时候不是输入法的顺序有问题,而且输入法直接没了。
1 2 3 4 5
| : 修复输入法消失.bat
taskkill /F /IM ChsIME.exe start C:\Windows\system32\ctfmon.exe REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "ctfmon.exe" /t REG_SZ /d "C:\Windows\system32\ctfmon.exe" /f
|
运行效果
这是运行完脚本之后的效果
注册表里面也变了
原文作者:tjxwork
原文链接:https://www.tjxblog.com/blog/2023-0003
发布时间:2023-02-05