【问题标题】:Set language by batch script for all users通过批处理脚本为所有用户设置语言
【发布时间】:2020-11-27 11:19:57
【问题描述】:

我读到了Questions/Problems related to set-winuserlanguagelist command

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

  1. 是否有 Microsoft DotNet 库可以像 winuserlanguagelist 一样在操作系统上设置语言?
  2. 是否有解决方案为整台计算机上的所有用户设置键盘语言?

Powershell ps1 脚本

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

【问题讨论】:

    标签: .net windows powershell


    【解决方案1】:

    是否有像 winuserlanguagelist 那样在操作系统上设置语言的 Microsoft DotNet 库?

    如果您正在运行像 wpf 这样的 UI 应用程序,那么为应用程序设置键盘语言或文化设置非常容易。例如:Change system language for one/active window in WPF

    有没有办法为整台电脑上的所有用户设置键盘语言?

    如果您想实际更改当前用户和其他用户的用户语言,这将变得更加棘手。我查看了PInvoke 以检查是否有用于此的 Windows dll,但我找不到它们。

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

    要检索用户 UI 语言,应用程序可以调用 GetUserDefaultUILanguage 或 GetUserPreferredUILanguages。应用程序无法更改用户 UI 语言,因为没有设置它的功能。

    在这种情况下,总会有 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 的老手,所以不要把这当作绝对的事实。但是我花时间研究了您的问题,希望这至少对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      相关资源
      最近更新 更多