通过批处理脚本为所有用户设置语言

时间:2020-08-07 06:29:30

标签: .net windows powershell

我了解了Questions/Problems related to set-winuserlanguagelist command

但是此脚本仅适用于当前用户或用户。

  1. 是否有Microsoft DotNet库像winuserlanguagelist一样在OS上设置语言?
  2. 是否有解决方案为整个计算机上的所有用户设置键盘语言?

Powershell ps1脚本

    $LanguageList = Get-WinUserLanguageList 
    $LanguageList.Clear()
    $LanguageList.Add("de-CH") 
    $LanguageList.Add("en-US") 
    Set-WinUserLanguageList $LanguageList -Force

1 个答案:

答案 0 :(得分:0)

是否有Microsoft DotNet库像winuserlanguagelist一样在OS上设置语言?

如果您正在运行wpf之类的UI应用程序,则非常容易为该应用程序设置键盘语言或区域性设置。例如:Change system language for one/active window in WPF

是否有解决方案为整个计算机上的所有用户设置键盘语言?

如果您想实际更改当前用户和其他用户的语言,这将变得更加棘手。我通过PInvoke进行了检查,以检查是否存在Windows dll并找不到它们。

通过msdn进一步看,我也读到了这句话:

要检索用户UI语言,应用程序可以调用GetUserDefaultUILanguage或GetUserPreferredUILanguages。该应用程序无法更改用户界面语言,因为没有设置功能。<​​/ p>

在这种情况下,总是有WMI。不幸的是-我个人找不到从那里设置语言的任何内容。

此答案指出,此信息可能包含在Windows注册表中: https://stackoverflow.com/a/35704694/4122889

您可能需要以下lcid列表: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f

更改注册表后,您需要重新启动。

看来这并非易事。我只能想到另外2个选项;

  1. 窃听powershell cmd-let上的内容以检查注册表更改或Wmi调用,例如process explorer,然后在C#中重新创建逻辑
  2. 只需使用process类来运行Powershell脚本。还有一个可能有用的powershell运行器库。

我觉得那里有更好的答案,而且我不是Windows的资深人士,所以请不要将此视为绝对真理。但是我花了一些时间研究您的问题,希望对您至少有帮助。

相关问题