Как изменить “Экран приветствия” – “Язык ввода” и “Новые учетные записи пользователей” – “Язык ввода” в PowerShell? (WIN 10)

Вопрос или проблема

В настоящее время у меня проблема на Win10.

Проблема:

Я хочу установить язык ПК для всех пользователей и даже экран приветствия на “FR-BE” с помощью PowerShell.

Вот что я пробовал до сих пор:

  • используя командлет copyinternationalsettings, но он не совместим с Win 10
  • Я próbował rozwiązanie, которое я нашел на superuser.com:
  1. Запустить свой скрипт, который вы можете найти ниже
  2. Вручную импортировать 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: Объяснение кода

  1. Функция Change-Language — принимает язык в качестве параметра и настраивает его для текущего пользователя, применяя все необходимые изменения.

  2. Загрузка реестра — находится в файле NTUSER.DAT для профиля по умолчанию пользователей. Это позволяет вам вносить изменения, которые будут применены к новым пользователям.

  3. Копирование настроек — параметры языка и раскладки копируются из текущих пользовательских настроек в профиль нового пользователя.

  4. Свойства реестра — с помощью Set-ItemProperty устанавливаются значения языка и раскладки для экрана приветствия.

  5. Разгрузка реестра — освобождает редактируемый реестр после внесения изменений.

Заключение

После выполнения данного скрипта, язык ввода для всех пользователей на экране приветствия, а также для вновь создаваемых учетных записей будет установлен на "FR-BE". Не забудьте запустить PowerShell с повышенными привилегиями для успешного выполнения всех операций.

Оцените материал
Добавить комментарий

Капча загружается...