如何检测哪个国家/地区的安装程序正在运行(离线)
答案 0 :(得分:1)
有GetUserDefaultGeoName
function:
[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;
答案 1 :(得分:0)
您应该访问注册表项'H_KEY_CURRENT_USER / Control Panel / International / sCountry'或者可能是'sLanguage'。
请注意,这将为您提供用户想要的文化习俗和语言,而不是实际的地理位置。
可能的替代方案是'H_KEY_CURRENT_USER / Software / Microsoft / Windows NT / TimeZones / TimeZoneKeyName',它可能会为您提供真实位置的线索。
否则,您可以使用像“http://www.ip-adress.com/”这样的网络服务,它会告诉您机器ISP的位置,鉴于某些公司网络遭受了严重破坏,这可能与机器本身位于不同的国家/地区。
通常最有效的方法是让用户从下拉菜单中选择“选择国家/地区”。
答案 2 :(得分:0)
您不应该依赖注册表值,它们可能会在更高版本的Windows中更改或删除,恕不另行通知。我建议直接使用Windows API GetLocaleInfo()
。
LanguageDetectionMethod=locale
部分设置[Setup]
。