Вопрос или проблема
В настоящее время у меня проблема на Win10.
Проблема:
Я хочу установить язык ПК для всех пользователей и даже экран приветствия на “FR-BE” с помощью PowerShell.
Вот что я пробовал до сих пор:
- используя командлет copyinternationalsettings, но он не совместим с Win 10
- Я próbował rozwiązanie, которое я нашел на superuser.com:
- Запустить свой скрипт, который вы можете найти ниже
- Вручную импортировать reg файл
file.reg:
Windows Registry Editor Version 5.00
[HKEY_USERS\.DEFAULT\Keyboard Layout\Preload]
"1"="0000080c" #Ключ для FR-BE
"2"="0000081c"
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Control Panel\International]
"BlockUserInputMethodsForSignIn"=dword:00000001
-> Вот мой код скрипта:
function Change-Language {
param (
[string]$language
)
if ($language -eq "az") {
Write-Host "Будет применен формат AZERTY" -Foreground Green
$langlist = New-WinUserLanguageList fr-BE
$langlist[0].InputMethodTips.Clear()
$langlist[0].InputMethodTips.Add('080c:0000080c') # Раскладка клавиатуры AZERTY
Set-WinUserLanguageList $langlist -Force
Set-WinSystemLocale -SystemLocale fr-BE
Set-WinDefaultInputMethodOverride -InputTip "080C:0000080c"
Set-WinUILanguageOverride -Language fr-BE
Set-WinHomeLocation -GeoId 21
} elseif ($language -eq "qw") {
Write-Host "Вы выбрали формат QWERTY" -Foreground Green
$langlist = New-WinUserLanguageList en-IE
$langlist[0].InputMethodTips.Clear()
$langlist[0].InputMethodTips.Add('1809:00001809') # Раскладка клавиатуры QWERTY
Set-WinUserLanguageList $langlist -Force
Set-WinSystemLocale -SystemLocale en-IE
Set-WinDefaultInputMethodOverride -InputTip "1809:00001809"
Set-WinUILanguageOverride -Language en-IE
Set-WinHomeLocation -GeoId 21
} else {
write-host "Вы не выбрали никакой формат, ничего не делаем" -Foreground Yellow
}
return
}
Change-Language -language "az"
Результаты:
Результат, который я получаю, близок к решению, но не решает его.
Скрипт с рег-файлом меняет язык ввода для текущего пользователя и экрана приветствия.
Но для новых пользователей, похоже, это не меняется вообще.
Может кто-то помочь мне?
Источник: Установка метода ввода по умолчанию для экрана входа в Windows 10
Параметры экрана приветствия находятся в HKU\.DEFAULT
Настройки новых пользователей находятся в C:\Users\Default\NTUSER.DAT
Чтобы изменить настройки новых пользователей, необходимо загрузить реестр:
reg load HKU\editDefault C:\Users\default\NTUser.dat
Copy-Item -Path “HKCU:\Control Panel\International\Geo” -Destination “REGISTRY::HKEY_USERS\editDefault\Control Panel\International” -Recurse
Copy-Item -Path “HKCU:\Keyboard Layout\Preload” -Destination “REGISTRY::HKEY_USERS\editDefault\Keyboard Layout” -Recurse
reg unload HKU\editDefault
Ответ или решение
Изменение языка ввода на экране приветствия и для новых профилей пользователей в Windows 10 — задача, которая требует внимания к деталям, особенно при использовании PowerShell. В этом ответе мы рассмотрим, как изменить язык ввода для существующих пользователей, экрана входа системы и новых пользователей, используя соответствующие инструменты и команды PowerShell.
Шаг 1: Настройка языка ввода для текущего пользователя и экрана входа
Ваша начальная часть кода, которая использует функцию Change-Language
, хорошо настраивает язык и раскладку для текущего пользователя. Однако для изменения параметров на экране приветствия и для новых пользователей необходимо больше действий.
Вы правильно идентифицировали, что параметры для экрана приветствия находятся в HKU\.DEFAULT
и что настройки нового пользователя хранятся в файле NTUSER.DAT
, расположенном по пути C:\Users\Default
.
Шаг 2: Изменение реестра с помощью PowerShell
Вот как можно сделать эти изменения с помощью PowerShell:
# Функция для изменения языка и раскладки
function Change-Language {
param (
[string]$language
)
# Применяем язык для текущего пользователя
$langlist = New-WinUserLanguageList $language
$langlist[0].InputMethodTips.Clear()
$langlist[0].InputMethodTips.Add('080c:0000080c') # Например, AZERTY для FR-BE
Set-WinUserLanguageList $langlist -Force
Set-WinSystemLocale -SystemLocale $language
Set-WinDefaultInputMethodOverride -InputTip "080C:0000080c"
Set-WinUILanguageOverride -Language $language
Set-WinHomeLocation -GeoId 21
}
# Применяем изменения к текущему пользователю
Change-Language -language "fr-BE"
# Перемещение к настройкам по умолчанию пользователей
$defaultUserNtUserDatPath = "C:\Users\Default\NTUSER.DAT"
$editHiveName = "editDefault"
# Загружаем реестр нового пользователя
reg load HKU\$editHiveName $defaultUserNtUserDatPath
# Копируем настройки языка и раскладки
Copy-Item -Path "HKCU:\Control Panel\International\Geo" -Destination "REGISTRY::HKEY_USERS\$editHiveName\Control Panel\International" -Recurse
Copy-Item -Path "HKCU:\Keyboard Layout\Preload" -Destination "REGISTRY::HKEY_USERS\$editHiveName\Keyboard Layout" -Recurse
# Загружаем язык для экрана приветствия
Set-ItemProperty -Path "REGISTRY::HKEY_USERS\$editHiveName\Keyboard Layout\Preload" -Name "1" -Value "0000080c"
Set-ItemProperty -Path "REGISTRY::HKEY_USERS\$editHiveName\Keyboard Layout\Preload" -Name "2" -Value "0000081c"
# Убираем загрузку хранилища реестра
reg unload HKU\$editHiveName
Шаг 3: Объяснение кода
-
Функция
Change-Language
— принимает язык в качестве параметра и настраивает его для текущего пользователя, применяя все необходимые изменения. -
Загрузка реестра — находится в файле
NTUSER.DAT
для профиля по умолчанию пользователей. Это позволяет вам вносить изменения, которые будут применены к новым пользователям. -
Копирование настроек — параметры языка и раскладки копируются из текущих пользовательских настроек в профиль нового пользователя.
-
Свойства реестра — с помощью
Set-ItemProperty
устанавливаются значения языка и раскладки для экрана приветствия. -
Разгрузка реестра — освобождает редактируемый реестр после внесения изменений.
Заключение
После выполнения данного скрипта, язык ввода для всех пользователей на экране приветствия, а также для вновь создаваемых учетных записей будет установлен на "FR-BE". Не забудьте запустить PowerShell с повышенными привилегиями для успешного выполнения всех операций.