Получить текущую страну и информацию о местоположении с помощью 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#