1

我想知道我的应用程序在哪里使用。

这是获取国家名称和时区的代码:

TimeZone localZone = TimeZone.CurrentTimeZone;
var result = localZone.StandardName;
var s = result.Split(' ');
Console.WriteLine(s[0]);
Console.WriteLine(RegionInfo.CurrentRegion.DisplayName);

但我的问题是,任何人都可以更改时区。根据时区,我可能会得到错误的名称。并且区域设置为美国,不可更改。因为所有用户都有相同的设置,并且我的应用程序有数十万用户。

有什么方法可以读取任何操作系统设置/系统设置并获取当前使用我的应用程序的国家/地区?

4

2 回答 2

2

您可以使用 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 或更高版本需要能够在没有 3rd 方库的情况下将 json 转换为 object。

如果您针对较低的框架,您可以自己解析信息字符串。

于 2017-02-02T16:02:39.450 回答
1

您可以使用 IP 地址来获取位置,有很多选项可以做到这一点,其中之一是ipinfodb,您可以从这里获取示例 - Class CountryIP VB/C#

于 2017-02-02T07:31:18.233 回答