3

ОС: Windows 7 64-битная

У меня есть машина с настройками "Регион и язык" , установленными на "Канада". Что мне нужно сделать, это изменить все эти настройки, чтобы вернуться к значению по умолчанию "Соединенные Штаты". Кроме того, я хочу создать скрипт для этого, так как я ожидаю, что с этой проблемой столкнется с большим количеством машин. Я не хочу менять настройки через графический интерфейс на каждой машине.

Мне нужно сделать эти действия на этих вкладках:

Регион и язык (формат)-
Мне нужно, чтобы "Формат" был изменен на "Английский (США)"

Регион и язык (местоположение)-
Мне нужно, чтобы "Текущее местоположение" было установлено в "Соединенные Штаты"

Регион и язык - текстовые сервисы и язык ввода (общий) -
Мне нужно удалить все языки клавиатуры, кроме «Английский (США) - США»

Регион и язык (административный)-
Здесь я считаю, что для «не-Unicode-программ» также нужно будет установить «English (United States)»

(У меня есть скриншоты, но у меня нет репутации, необходимой для их публикации.)

До сих пор я нашел этот документ от Microsoft, который демонстрирует XML-файл, который может быть создан для изменения настроек выше

Проблема заключается в том, что единственный пример XML из ссылки, которая, по-видимому, работает должным образом, - это пример добавления и установки языка клавиатуры по умолчанию. Я пробовал некоторые другие примеры, но они не работают. Вот рабочий пример:

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<!--User List-->
<gs:UserList>
<gs:User UserID="Current"/>
</gs:UserList>
<!--input preferences-->
<gs:InputPreferences>
<!--en-US-->
<gs:InputLanguageID Action="add" ID="0409:00000409" Default="true"/>
<!--en-CANADA-->
<gs:InputLanguageID Action="remove" ID="1009:00001009"/>
</gs:InputPreferences>
</gs:GlobalizationServices>

Приведенный выше код добавит язык клавиатуры США, если он не существует, а затем установит его по умолчанию, но, к сожалению, я не могу удалить канадский язык клавиатуры.

Есть ли способ программно изменить все эти настройки? Я пропускаю что-то очевидное?

2 ответа2

2

Я смог найти решение моей проблемы!
Есть несколько вещей, которые я узнал.

В "ID" часть числа перед двоеточием ("1009") представляет клавиатуру региона, т. Е. Английскую (Канада). Число после двоеточия ("00001009") - это фактический язык, установленный для этой клавиатуры. "00001009" будет фактически нацелен на "канадский французский" под клавиатурой региона английского языка (Канада)

Еще одна вещь, которую я узнал, заключается в том, что коды регионов на сайте MS не отображались должным образом, поэтому я не смог правильно изменить "Locale". Эта ссылка содержит значения, которые необходимо использовать при изменении "Локали". США - геоид = 244

Еще одна вещь, которую мне пришлось сделать, - создать два разных XML-файла и запускать их один за другим. По какой-то причине удаление английской (канадской) клавиатуры и всех ее подъязыков, а затем добавление английской (американской) клавиатуры в том же скрипте приводило к ошибке, которая мешала правильному применению файла XML. Мне пришлось сделать удаление клавиатур (я оставил изменение формата и локали) в одном файле XML и добавление клавиатуры США в другом файле XML.

В любом случае, для всех, кто заинтересован, я опубликую свои окончательные XML-файлы ниже. Для их запуска я использовал следующие команды в командном файле.

control intl.cpl ,, /f:" <path_to_file> "

(после второй запятой есть пробел)

Первый скрипт для удаления клавиатуры, изменения формата и изменения локали
Обратите особое внимание на то, как создаются значения "ID", это иллюстрирует то, что я пытался объяснить выше!

    <gs:User UserID="Current"/>

    </gs:UserList>

    <!--input preferences - Keyboard languages-->

    <gs:InputPreferences>

    <!--Beginning of en-CANADA-->

    <!--Remove Canada French from under keyboard English(Canada)-->
    <gs:InputLanguageID Action="remove" ID="1009:00001009"/>
    <!--Remove Canadian MultiLingual Standard from under keyboard English(Canada)-->
    <gs:InputLanguageID Action="remove" ID="1009:00011009"/>
    <!--Remove US from under keyboard English(Canada)-->
    <gs:InputLanguageID Action="remove" ID="1009:00000409"/>

    <!--Beginning of en-US-->
    <!--Add keyboard US(English)-->
    <!--Please note that the command below was moved into another XML file. Reason being, it was causing an error-->
    <!--that would stop the US keyboard from being installed properly.-->
    <!--<gs:InputLanguageID Action="add" ID="0409:00000409" Default="true"/>-->

    </gs:InputPreferences>

    <!--location - Change location on Location tab to US-->

    <gs:LocationPreferences>

    <gs:GeoID Value="244"/>

    </gs:LocationPreferences>

    <!--User Locale - This changes formats to English(United States) ie M/dd/yyyy-->

    <gs:UserLocale>

    <gs:Locale Name="en-US" SetAsCurrent="true"/>

    </gs:UserLocale>


    </gs:GlobalizationServices>



Этот скрипт добавит в клавиатуру США и установить ее в качестве клавиатуры по умолчанию системы

   <!--User List-->

   <gs:UserList>

   <gs:User UserID="Current"/>

   </gs:UserList>

   <!--input preferences - Keyboard languages-->

   <gs:InputPreferences>

   <!--Add keyboard US(English)-->
   <gs:InputLanguageID Action="add" ID="0409:00000409" Default="true"/>

   </gs:InputPreferences>

   </gs:GlobalizationServices>



Это о суммировании.
Вот несколько дополнительных полезных ссылок:
http://msdn.microsoft.com/en-us/library/ms912389%28WinEmbedded.11%29.aspx
http://texhex.blogspot.com/2009/10/installing-and-configuring-language.html
http://msdn.microsoft.com/en-us/goglobal/bb896001
http://technet.microsoft.com/en-us/library/cc766503(WS.10).aspx

1

Также убедитесь, что вы установили новую клавиатуру по умолчанию перед удалением клавиатуры, которая была старой клавиатурой по умолчанию

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .