Windows 7 - Alterar as configurações de região e idioma usando um script

3

SO: Windows 7 de 64 bits

Eu tenho uma máquina que teve suas configurações de "Região e idioma" definidas para "Canadá" . O que eu preciso fazer é alterar todas essas configurações para voltar ao padrão "Estados Unidos" . Além disso, quero criar um script para isso, pois espero encontrar mais computadores com esse problema. Eu não quero ter que alterar as configurações através da GUI em todas as máquinas.

Eu preciso fazer essas ações nessas guias:

Região e idioma (formato) -
Preciso de "Format" alterado para "English (United States)"

Região e idioma (local) -
Preciso de "Local atual" definido como "Estados Unidos"

Região e idioma - Serviços de texto e idioma de entrada (geral) -
Preciso excluir todos os idiomas do teclado, exceto para "English (United States) - US"

Região e idioma (administrativo) -
Aqui, acredito que "programas não-Unicode" também terão que ser definidos para "Inglês (Estados Unidos)"

(tenho capturas de tela, mas não tenho a reputação necessária para publicá-las.)

Até agora eu encontrei este documento da Microsoft que demonstra um arquivo XML que pode ser criado para modificar as configurações acima

O problema é que o único exemplo XML do link que parece estar funcionando corretamente é aquele para adicionar e configurar um idioma de teclado como padrão. Eu tentei alguns dos outros exemplos, mas eles não parecem estar funcionando. Aqui está um exemplo de trabalho:

<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>

O código acima irá adicionar no idioma do teclado dos Estados Unidos, se ele não existir, e então configurá-lo como padrão, mas infelizmente não consigo excluir o idioma do teclado canadense.

Existe um método para alterar programaticamente todas essas configurações? Eu estou negligenciando algo óbvio?

    
por bourne 03.11.2011 / 23:20

2 respostas

2

Consegui encontrar uma solução para o meu problema!
Há algumas coisas que aprendi.

No "ID" , a parte do número na frente dos dois pontos ("1009") representa o teclado regional, ou seja, inglês (Canadá). O número após os dois pontos ("00001009") é o idioma real instalado para esse teclado. "00001009" terá como alvo o "Canadá Francês" sob o teclado regional do inglês (Canadá)

Outra coisa que aprendi é que os códigos de região no site do MS não foram exibidos corretamente, e é por isso que não consegui alterar o "Locale" adequadamente. Este link contém os valores que você precisa usar ao alterar a "região ". US is GeoID = 244

A outra coisa que acabei tendo que fazer foi criar dois arquivos XML diferentes e executá-los um após o outro. Por algum motivo, remover o teclado em inglês (Canadá) e todas as sublinguagens e, em seguida, adicionar o teclado em inglês (EUA) no mesmo script estava produzindo um erro que impedia a aplicação correta do arquivo XML. Eu tive que fazer a remoção dos teclados (deixei a mudança de formato e local) em um arquivo XML e a adição do teclado americano em outro arquivo XML.

De qualquer forma, para qualquer pessoa interessada, postarei meus arquivos XML finais abaixo. Para executá-los, usei os seguintes comandos em um arquivo em lotes.

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

(há um espaço após a segunda vírgula)

Primeiro script para remover teclados, alterar o formato e alterar o local
Preste especial atenção em como os valores de "ID" são feitos, isso ilustra o que eu estava tentando explicar acima!                           

    <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>



Este script adicionará o teclado dos EUA e o definirá como o teclado padrão do sistema        

   <!--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>



Isto resume tudo.
Aqui estão alguns links úteis adicionais: link
link
link
link

    
por 11.11.2011 / 04:14
1

Certifique-se também de definir um novo teclado padrão antes de remover o teclado que era o antigo teclado padrão

    
por 14.06.2012 / 14:51