4

Как я могу программно получить доступ к региону компьютера Windows?

В частности, я ищу это значение на панели «Регион и язык» в Windows 10.

Windows 10 Регион

Или (поочередно)"Домашнее местоположение" в Панели управления -> Регион -> вкладка Местоположение.

Расположение панели управления Windows

Я надеюсь найти что-то, что будет работать для Windows 7-10. Также отмечу, что моим выбранным языком по умолчанию является английский (США). Я попытался выйти из системы и перезагрузить компьютер, чтобы применить любые изменения. Я пробовал следующие команды (от powershell):

wmic os get locale
// 0409 -> Translates to United States
// This one is especially problematic - 
// it doesn't seem to change
// when I change my default language.

Get-Culture
// 1033 -> English (United States)

Get-UICulture
// 1033 -> English (United States)

Я бы предпочел не полагаться на выбранный язык операционной системы, если это вообще возможно. Было бы неплохо также решение без PowerShell, так как я не уверен, что могу полагаться на то, что сценарии PowerShell исполняются на компьютерах конечных пользователей.


Изменить: Этот ответ на переполнение стека работает для меня, и сообщает "Canada" как и ожидалось (или "CA" , если я использую GeoType 4, что я на самом деле после). Я не использую C Sharp (или что-либо, что могло бы напрямую взаимодействовать с kernel32.dll ), поэтому, если кто-нибудь знает, где взять эту информацию в другом месте, это все равно будет оценено. Но я могу написать приложение .NET Core, которое, если понадобится, заберет его у меня.

3 ответа3

3

Как мне получить расположение окон дома?

Используйте Get-WinHomeLocation:

Командлет Get- WinHomeLocation получает значение пользовательского параметра GeoID и возвращает объект .NET GeoID . Параметр Windows GeoID - это параметр пользователя, который описывает домашнее местоположение текущей учетной записи пользователя. Местом расположения является страна или регион. Приложения, которым требуется домашнее местоположение текущей учетной записи пользователя, например драйвер для приложения телевизионного тюнера, могут использовать этот параметр.

Для таблицы GeoID см. Таблица географических местоположений .

Примеры

Пример 1. Отображение GeoID для текущей учетной записи

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

Эта команда возвращает параметр GeoID и его отображаемое имя для текущей учетной записи пользователя.

Источник Get-WinHomeLocation

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

опирается на текстовые утилиты GNU cut и sed , так как Windows , не имеет текст фильтрации capavbility необходимое из коробки. Их двоичные файлы Win32 можно загрузить с http://gnuwin32.sourceforge.net/packages/coreutils.htm и скопировать в путь к машине или в каталог, где вы будете выполнять команду.

systeminfo является частью Windows, которая извлекает информацию о вашей конфигурации и оборудовании. Мы берем его вывод и фильтруем его с помощью findstr, другого исполняемого файла Window, чтобы показать только строки с "locale", а затем используем find, еще один исполняемый файл Windows, чтобы отфильтровать оставшиеся строки, чтобы показать только те, которые также включают "System". Затем мы используем команду cut, чтобы выбросить все, вплоть до «(»), и sed завершает работу, выбрасывая символ закрывающей скобки «)».

Это не Powershell, и хотя он зависит от двух внешних двоичных файлов, они являются доброкачественными и небольшими (39 КБ и 79 КБ).

1

Параметр «Регион Windows» представляется для каждого пользователя в реестре здесь: HKEY_CURRENT_USER:\Control Panel\International\Geo\ . Если вы использовали Powershell для получения этого значения, вы можете сделать это с помощью:

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

Пример для США:

Регион ЦА Регион ЦС ПС

Пример для CA:

Регион США Регион США PS

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