You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11通过PowerShell添加键盘后点击语言栏致任务栏冻结求助

解决登录脚本添加语言后语言栏卡住的问题

问题根源

登录脚本执行时机过早,此时Windows Shell相关组件(如Microsoft.Windows.ShellExperienceHost)尚未完成初始化,修改用户语言列表会导致组件激活失败,进而引发UI卡顿。手动运行或通过界面添加时,Shell组件已完全加载,因此不会出现问题。

可行解决方案

1. 延迟脚本执行

在登录脚本中添加延迟,等待Shell组件初始化完成后再执行语言添加操作:

# 等待10秒,可根据实际环境调整时长
Start-Sleep -Seconds 10

$LanguageList = Get-WinUserLanguageList
# 添加判断避免重复执行,减少系统负担
if (-not ($LanguageList.LanguageTag -contains "ru-RU")) {
    $LanguageList.Add("ru-RU")
    Set-WinUserLanguageList $LanguageList -Force
}

2. 使用RunOnce注册表项执行脚本

将脚本注册到用户的RunOnce注册表项,确保在Shell完全启动后仅执行一次:

  1. 编写包含语言添加逻辑的PowerShell脚本(如Add-RussianLanguage.ps1),保存到域共享路径。
  2. 通过组策略或登录脚本添加注册表项:
$runOncePath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce"
Set-ItemProperty -Path $runOncePath -Name "AddRussianLanguage" -Value "powershell.exe -ExecutionPolicy Bypass -File \\domain-share\scripts\Add-RussianLanguage.ps1"

RunOnce中的命令会在用户登录完成、Shell加载完毕后自动执行,执行后会自动删除该注册表项。

3. 任务计划程序触发执行

创建任务计划,设置为用户登录后延迟触发:

  • 触发器:用户登录后延迟5分钟(可按需调整)
  • 操作:启动程序powershell.exe,参数为-ExecutionPolicy Bypass -File "脚本完整路径"
  • 条件:按需勾选"只有在计算机使用交流电源时才启动此任务",取消"唤醒计算机运行此任务"

4. 修复已出现问题的用户

若用户已出现卡顿问题,可执行以下命令修复ShellExperienceHost组件:

Get-AppXPackage *ShellExperienceHost* | Foreach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

事件查看器报错信息:
"Activation for Microsoft.Windows.ShellExperienceHost_cw5n1h2txyewy!App failed. Error code: Class not registered. Activation phase: No phase defined"

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:25:41