我想知道我的应用程序在哪里使用。
以下是获取国家/地区名称和时区的代码:
TimeZone localZone = TimeZone.CurrentTimeZone;
var result = localZone.StandardName;
var s = result.Split(' ');
Console.WriteLine(s[0]);
Console.WriteLine(RegionInfo.CurrentRegion.DisplayName);
但我的问题是,任何人都可以改变时区。根据时区我可能会得到错误的名字。区域设置用作无法更改的美国。因为所有用户都具有相同的设置,并且我的应用程序中有成千上万的用户。
有没有办法阅读任何操作系统设置/系统设置并获取我的应用程序使用的当前国家/地区?
答案 0 :(得分:1)
您可以使用IP地址获取位置,有很多选项可供选择,其中一个是 ipinfodb ,您可以从此处获取示例 - Class CountryIP VB/C#
答案 1 :(得分:1)
您可以使用IpInfo通过其互联网地址获取用户的国家/地区。 除非他们在VPN或代理之下,否则这是你最好的选择。
class Program
{
static void Main(string[] args)
{
GetCountryByIP();
}
public static void GetCountryByIP()
{
IpInfo ipInfo = new IpInfo();
string info = new WebClient().DownloadString("http://ipinfo.io");
JavaScriptSerializer jsonObject = new JavaScriptSerializer();
ipInfo = jsonObject.Deserialize<IpInfo>(info);
RegionInfo region = new RegionInfo(ipInfo.Country);
Console.WriteLine(region.EnglishName);
Console.ReadLine();
}
public class IpInfo
{
//country
public string Country { get; set; }
}
}
请注意,net framework 4.5或更高版本需要能够将json转换为没有第三方库的对象。
如果你定位较低的框架,你可以自己解析信息字符串。