Как определить, в какой стране / регионе работает установщик - PullRequest
1 голос
/ 08 сентября 2010

Как определить, в какой стране / регионе работает установщик (в автономном режиме).

Ответы [ 3 ]

1 голос
/ 05 июля 2019

Есть GetUserDefaultGeoName функция :

[Code]

function GetUserDefaultGeoName(GeoName: string; GeoNameCount: Integer): Integer; 
  external 'GetUserDefaultGeoName@Kernel32.dll stdcall';

function GetGeoName: string;
begin
  SetLength(Result, 100);
  SetLength(Result, GetUserDefaultGeoName(Result, Length(Result)));
end;
0 голосов
/ 11 октября 2010

Вы не должны полагаться на значения реестра, они могут быть изменены или удалены из более поздней версии Windows без дальнейшего уведомления.Я рекомендую использовать Windows API GetLocaleInfo() напрямую.

Кстати, почему вы хотите это сделать?Если вы просто хотите, чтобы ваш установщик автоматически использовал язык, соответствующий языковым настройкам на панели управления пользователя, установите LanguageDetectionMethod=locale в разделе [Setup].

0 голосов
/ 09 сентября 2010

Вы должны получить доступ к ключу реестра HKEY_CURRENT_USER/Control Panel/International/sCountry или, возможно, sLanguage.

Обратите внимание, что это даст вам культурные соглашения и язык, который хочет пользователь, а не фактическое географическое положение.

Возможная альтернатива - HKEY_CURRENT_USER/Software/Microsoft/Windows NT/TimeZones/TimeZoneKeyName, которая может дать вам подсказку относительно реального местоположения.

В противном случае вы могли бы использовать веб-сервис, такой как http://www.ip-adress.com/, который сообщит вам о расположении интернет-провайдера, который может находиться в другой стране, нежели сам компьютер, учитывая топологию некоторых корпоративных сетей.

Что обычно лучше всего работает, так это попросить пользователя «Выбрать страну» из выпадающего меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...