繁体   English   中英

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

[英]Set language by batch script for all users

我阅读了与 set-winuserlanguagelist 命令相关的问题/问题

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

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

Powershell ps1脚本

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

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

如果您正在运行像 wpf 这样的 UI 应用程序,那么为应用程序设置键盘语言或文化设置非常容易。 例如: 更改 WPF 中一个/活动 window 的系统语言

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

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

通过msdn进一步查看,我还阅读了以下内容:

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

在这种情况下,总会有 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

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

似乎这不是那么容易做到的。 我只能想到另外两个选择;

  1. 窃听 powershell cmd-let 以检查注册表更改或 Wmi 调用,例如进程资源管理器并重新创建 C# 中的逻辑
  2. 只需使用进程class 即可运行 powershell 脚本。 还有一个可能有用的 powershell 运行器库。

我觉得那里有更好的答案,而且我不是 Windows 的老手,所以不要把这当作绝对的真理。 但是我花时间研究了您的问题,希望这至少对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM