发布于 

PowerShell 设置 Windows10 输入法顺序

系统自带的输入法设置不正常

Windosw10 在安装使用一些比较旧的输入法的时候,在设置里面添加删除输入法都不太正常,比如极点五笔,一般是选项呈现灰色状态,无法添加或者删除。

设置里面添加删除输入法都不太正常

一般要借助搜狗输入自带的输入法管理器之类的工具才能更改。

搜狗输入自带的输入法管理器

其实可以直接使用 PowerShell 来对输入法添加删除、修改顺序。

核心语句和机制

核心语句是 New-WinUserLanguageListGet-WinUserLanguageList

可以先用搜狗之类带的输入法管理器把输入法排得着不多之后,用 Get-WinUserLanguageList 来获取当前的输入法配置。

LocalizedName 项就是设置里面添加的语言

InputMethodTips 项就是输入法的顺序

Get-WinUserLanguageList

其实本质上还是注册表,但是直接改注册表后重启资源管理器是不生效的,不知道是哪部分负责的,重启应该能生效吧,所以还是直接用 PowerShell 吧。

中文(简体,中国) 语言的注册表路径:HKEY_CURRENT_USER\Control Panel\International\User Profile\zh-Hans-CN

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
#常用的输入法的值

#zh-Hans-CN 搜狗拼音
0804:{E7EA138E-69F8-11D7-A6EA-00065B844310}{E7EA138F-69F8-11D7-A6EA-00065B844311}

#zh-Hans-CN 搜狗五笔
0804:{E7EA138F-69F8-11D7-A6EA-00065B844310}{E7EA1390-69F8-11D7-A6EA-00065B844311}

#zh-Hans-CN #微软拼音
0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411F-A5AC-CA038EC515D7}

#zh-Hans-CN #微软五笔
0804:{6A498709-E00B-4C45-A018-8F9E4081AE40}{82590C13-F4DD-44F4-BA1D-8667246FDF8E}

#zh-Hans-CN #极点五笔
0804:E0010804

#zh-Hans-TW #极点五笔
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
# 设置Win10输入法顺序.ps1

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