Como posso acessar programaticamente a região de um computador com Windows?

4

Como posso acessar programaticamente a região de um computador Windows?

Especificamente, estou procurando esse valor na região & Painel de configurações de idioma no Windows 10.

Ou(alternadamente),o"Local da residência" no Painel de Controle - > Região - > Guia Localização.

EsperoencontraralgoquefuncioneparaoWindows7-10.Tambémobservandoqueomeuidiomaselecionadoéoinglês(EstadosUnidos).Eutenteitantofazerlogoutereiniciarmeucomputadorparaobterasalteraçõesaseremaplicadas.Eutenteiosseguintescomandos(dopowershell):

wmicosgetlocale//0409->TranslatestoUnitedStates//Thisoneisespeciallyproblematic-//itdoesn'tseemtochange//whenIchangemydefaultlanguage.Get-Culture//1033->English(UnitedStates)Get-UICulture//1033->English(UnitedStates)

Euprefeririaquenãoconfiassenoidiomaselecionadodosistemaoperacional,sepossível.Umasoluçãonão-PowerShelltambémseriaótima,jáquenãotenhocertezasepossoconfiaremscriptsdoPowerShellsendoexecutáveisnasmáquinasdosusuáriosfinais.

Editar: Esta resposta no Stack Overflow funciona para mim , e reporta "Canada" como esperado (ou "CA" , se eu usar um GeoType de 4, que é o que eu estou procurando depois). Eu não estou usando C Sharp (ou qualquer coisa que seria capaz de interagir com kernel32.dll diretamente), então se alguém souber onde obter essa informação em outro lugar, ainda assim será apreciado. Mas eu posso escrever um aplicativo .NET Core que agarre isso para mim, se for preciso.

    
por dvlsg 31.08.2018 / 23:22

3 respostas

1

A configuração da região do Windows parece estar armazenada, por usuário, no registro aqui: HKEY_CURRENT_USER:\Control Panel\International\Geo\ . Se você acabou usando o Powershell para recuperar esse valor, você poderia fazer isso com:

gp 'HKCU:\Control Panel\International\Geo\' | select -exp Name

Exemplo para EUA:

ExemploparaCA:

    
por 01.09.2018 / 22:06
3

Como obtenho a localização inicial do windows?

Use Get-WinHomeLocation :

The Get-WinHomeLocation cmdlet gets the value of the user GeoID setting and returns a .NET GeoID object. The Windows GeoID setting is a user setting that describes the home location of the current user account. A home location is the country or region. Applications that require the home location of the current user account, such as a driver for a television tuner application, can use this setting.

For a table of GeoIDs, see Table of Geographical Locations.

Examples

Example 1: Display the GeoID for the current account

PS C:\> Get-WinHomeLocation
HomeLocation     Description
----             -----------
244              United States

This command returns the GeoID setting and its display name for the current user account.

Fonte Get-WinHomeLocation

    
por 01.09.2018 / 22:19
1
systeminfo | findstr “Locale” | find "System" | cut -f2 -d( | sed s/)//g

depende dos utilitários de texto GNU cut e sed , pois o Windows não possui a capacidade de filtragem de texto necessária. Seus binários Win32 podem ser baixados do link e copiados para o caminho da máquina, ou para o diretório onde você irá execute o comando.

systeminfo é uma parte do Windows que extrai informações sobre sua configuração e hardware. Pegamos sua saída e filtramos com findstr , outro executável do Windows, para mostrar apenas as linhas com "locale", então usamos encontre , outro executável do Windows, para filtrar as linhas restantes para mostrar apenas as que também incluem "Sistema". Então, usamos corte para jogar fora tudo até e inclusive "(", e sed finaliza o trabalho jogando fora o caractere parêntese de fechamento ")".

Não é o Powershell, e apesar de depender de dois binários estrangeiros, eles são benignos e pequenos (39KB e 79KB).

    
por 01.09.2018 / 00:32