使用c#

时间:2017-02-02 07:02:27

标签: c# cultureinfo regioninfo

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

以下是获取国家/地区名称和时区的代码:

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

但我的问题是,任何人都可以改变时区。根据时区我可能会得到错误的名字。区域设置用作无法更改的美国。因为所有用户都具有相同的设置,并且我的应用程序中有成千上万的用户。

有没有办法阅读任何操作系统设置/系统设置并获取我的应用程序使用的当前国家/地区?

2 个答案:

答案 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转换为没有第三方库的对象。

如果你定位较低的框架,你可以自己解析信息字符串。