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

Inno setup 如何检测安装程序正在哪个国家/地区运行,inno-setup,Inno Setup,如何检测安装程序正在哪个国家/地区(脱机)运行。您应该访问注册表项HKEY\U CURRENT\U USER/Control Panel/International/SCONTRY或可能的俚语 注意,这将为您提供用户想要的文化习俗和语言,而不是实际的地理位置 另一种可能的选择是HKEY_CURRENT_USER/Software/Microsoft/Windows NT/TimeZones/TimeZoneKeyName,它可以为您提供有关实际位置的线索 否则,您可以使用类似http://www

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

您应该访问注册表项
HKEY\U CURRENT\U USER/Control Panel/International/SCONTRY
或可能的
俚语

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

另一种可能的选择是
HKEY_CURRENT_USER/Software/Microsoft/Windows NT/TimeZones/TimeZoneKeyName
,它可以为您提供有关实际位置的线索

否则,您可以使用类似
http://www.ip-adress.com/
这将告诉您计算机ISP的位置,考虑到某些公司网络的复杂拓扑结构,ISP可能位于与计算机本身不同的国家/地区


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

您应该访问注册表项
HKEY\U CURRENT\U user/Control Panel/International/Scontry
或可能的
sLanguage

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

另一种可能的选择是
HKEY_CURRENT_USER/Software/Microsoft/Windows NT/TimeZones/TimeZoneKeyName
,它可以为您提供有关实际位置的线索

否则,您可以使用类似
http://www.ip-adress.com/
这将告诉您计算机ISP的位置,考虑到某些公司网络的复杂拓扑结构,ISP可能位于与计算机本身不同的国家/地区


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

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


顺便说一句,你为什么要这么做?如果您只想让安装程序自动使用与用户控制面板中的语言设置相对应的语言,请在
[Setup]
部分中设置
LanguageDetectionMethod=locale

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

顺便说一句,你为什么要这么做?如果您只想让安装程序自动使用与用户控制面板中的语言设置相对应的语言,请在
[Setup]
部分中设置
LanguageDetectionMethod=locale

有:

[代码]
函数GetUserDefaultGeoName(GeoName:string;GeoNameCount:Integer):整数;
外部的GetUserDefaultGeoName@Kernel32.dllstdcall';
函数GetGeoName:string;
开始
设置长度(结果,100);
SetLength(结果,GetUserDefaultGeoName(结果,长度(结果));
结束;
有:

[代码]
函数GetUserDefaultGeoName(GeoName:string;GeoNameCount:Integer):整数;
外部的GetUserDefaultGeoName@Kernel32.dllstdcall';
函数GetGeoName:string;
开始
设置长度(结果,100);
SetLength(结果,GetUserDefaultGeoName(结果,长度(结果));
结束;

系统中存储的任何内容都不会显示国家/地区-计算机不必位于安装位置。跟踪设备(使用GPS或类似设备)将是可靠获取这些信息的唯一途径。我完全不同意。获得这些数据有两个原因。一个用于设置正确的语言等。在这种情况下,注册表项是您想要的,另一个用于许可或其他合同/法律原因,最好(但仍然不是100%)方法是通过挂号信发送许可证密钥。系统中存储的任何内容都不会给出国家/地区-计算机不必位于安装位置。跟踪设备(使用GPS或类似设备)将是可靠获取这些信息的唯一途径。我完全不同意。获得这些数据有两个原因。一个用于设置正确的语言等。在这种情况下,注册表项就是您想要的,另一个用于许可或其他合同/法律原因,其中最好(但仍然不是100%)的方法是通过挂号信发送许可证项。您为什么想知道?您为什么想知道?