代码之家  ›  专栏  ›  技术社区  ›  Tom

如何检测安装程序在哪个国家/地区运行

  •  0
  • Tom  · 技术社区  · 16 年前

    如何检测安装程序正在哪个国家/地区运行(脱机)。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Martin Prikryl    7 年前

    您应该访问注册表项 HKEY_CURRENT_USER/Control Panel/International/sCountry 或者有可能 sLanguage .

    请注意,这将为您提供用户想要的文化习俗和语言,而不是实际的地理位置。

    一个可能的选择是 HKEY_CURRENT_USER/Software/Microsoft/Windows NT/TimeZones/TimeZoneKeyName

    否则,您可以使用如下web服务 http://www.ip-adress.com/ 它会告诉你ISP机器的位置,考虑到一些公司网络的复杂拓扑结构,ISP机器很可能位于与机器本身不同的国家。

    通常最有效的方法是让用户从下拉菜单中“选择国家”。

        2
  •  1
  •   Martin Prikryl    7 年前

    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;
    
        3
  •  0
  •   Vantomex    15 年前

    您不应该依赖注册表值,它们可能会在不另行通知的情况下从更高版本的Windows中更改或删除。我建议使用windowsapi GetLocaleInfo() 而是直接。

    LanguageDetectionMethod=locale [Setup] 部分。

    推荐文章