Получить текущую страну и информацию о местоположении с помощью C#

Я хочу знать, где используется мое приложение.

Вот код для получения названия страны и часового пояса:

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

Но моя проблема в том, что любой может изменить часовой пояс. На основании часового пояса я могу получить неправильное имя. И настройки региона используются как соединенные штаты, которые нельзя изменить. Потому что у всех пользователей одинаковые настройки, а в моем приложении сотни тысяч пользователей.

Есть ли способ прочитать какие-либо настройки ОС / Системные настройки и узнать текущую страну, где используется мое приложение?

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 или более поздней версии необходима для возможности преобразования json в объект без сторонних библиотек.

если вы нацелены на нижние рамки, вы можете проанализировать информационную строку для себя.

Вы можете использовать IP-адрес, чтобы получить местоположение, есть много вариантов, и один из них - ipinfodb, вы можете получить пример здесь - Класс CountryIP VB/C#

Другие вопросы по тегам