Установить язык пакетным скриптом для всех пользователей - PullRequest
1 голос
/ 07 августа 2020

Я читал о Вопросы / Проблемы, связанные с командой set-winuserlanguagelist

Но этот скрипт будет работать только для текущего пользователя или пользователя.

  1. Есть ли Библиотека Microsoft Do tNet для настройки языка в ОС, как это делает winuserlanguagelist?
  2. Есть ли решение для установки языка клавиатуры для всех пользователей на всем компьютере?

Скрипт Powershell ps1

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

1 Ответ

0 голосов
/ 07 августа 2020

Есть ли библиотека Microsoft Do tNet для настройки языка в ОС, как это делает winuserlanguagelist?

Если вы запускаете приложение пользовательского интерфейса, такое как wpf, довольно легко установить настройки языка клавиатуры или культуры для приложения. Например: Изменить системный язык для одного / активного окна в WPF

Есть ли решение для установки языка клавиатуры для всех пользователей на всем компьютере?

Если вы действительно хотите изменить язык для текущего пользователя и других, это становится сложнее. Я просмотрел PInvoke , чтобы проверить, есть ли windows dll для этого, и я не смог их найти.

Просматривая msdn , я также читал это:

Чтобы получить язык пользовательского интерфейса, приложение может вызвать GetUserDefaultUILanguage или GetUserPreferredUILanguages. Приложение не может изменить язык пользовательского интерфейса, поскольку нет функции для его установки.

В подобных случаях всегда есть WMI. К сожалению, я лично не смог найти ничего, чтобы установить язык оттуда.

Этот ответ указывает, что эта информация, вероятно, содержится в реестре Windows: { ссылка }

Скорее всего, вам понадобится этот список lcids: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f

После изменения реестра потребуется перезагрузка.

Кажется как это сделать не так-то просто. Я мог придумать только 2 дополнительных варианта;

  1. Подслушивать cmd-let powershell для проверки изменений реестра или вызовов Wmi с помощью, например, проводника процессов и воссоздать logi c в C#
  2. Просто используйте класс process для запуска сценариев PowerShell. Существует также библиотека для запуска Powershell, которая может быть полезна.

Я чувствую, что есть лучшие ответы, и я не ветеран Windows, поэтому не воспринимайте это как абсолютная правда. Но я нашел время, чтобы немного изучить ваш вопрос, и я надеюсь, что это поможет вам хоть немного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...