2010-03-04 24 views

回答

1

HKEY_CURRENT_USER \控制面板\國際\地理

我不知道,如何將數字轉換爲國家的名稱:(

+0

看看這裏有編號和相應的國家的名單http://msdn.microsoft.com/en-us/library/dd374073%28VS.85%29.aspx – loco 2014-12-10 21:26:34

1

也許我們eful代碼(C#)

private const int GEOCLASS_NATION = 16; 

//SYSGEOTYPE 
private const int GEO_NATION = 1; 
private const int GEO_LATITUDE = 2; 
private const int GEO_LONGITUDE = 3; 
private const int GEO_ISO2 = 4; 
private const int GEO_ISO3 = 5; 
private const int GEO_RFC1766 = 6; 
private const int GEO_LCID = 7; 
private const int GEO_FRIENDLYNAME = 8; 
private const int GEO_OFFICIALNAME = 9; 
private const int GEO_TIMEZONES = 10; 
private const int GEO_OFFICIALLANGUAGES = 11; 


#region Win32 Declarations 

// [DllImport("kernel32.dll", ExactSpelling = true, CallingConvention = CallingConvention.StdCall, SetLastError = true)] 
// private static extern int GetUserGeoID(GeoClass geoClass); 

[DllImport("kernel32.dll")] 
static extern int GetUserGeoID(int geoId); 

[DllImport("kernel32.dll")] 
private static extern int GetUserDefaultLCID(); 

[DllImport("kernel32.dll")] 
private static extern int GetGeoInfo(int geoid, int geoType, StringBuilder lpGeoData, int cchData, int langid); 

#endregion 



private string GetGeoFriendlyName(int geoId) 
{ 
    int lcid = GetUserDefaultLCID(); 
    StringBuilder bldr = new StringBuilder(50); 
    GetGeoInfo(geoId, GEO_FRIENDLYNAME, bldr, bldr.Capacity, lcid); 
    return bldr.ToString(); 
} 

private string GetGeoIso2(int geoId) 
{ 
    int lcid = GetUserDefaultLCID(); 
    StringBuilder bldr = new StringBuilder(50); 
    GetGeoInfo(geoId, GEO_ISO2, bldr, bldr.Capacity, lcid); 
    return bldr.ToString(); 
} 




    // HKEY_CURRENT_USER\Control Panel\International\Geo" 
    using (var regKeyGeo = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Control Panel\International\Geo")) 
    { 
     var NationValue = Convert.ToInt32(regKeyGeo.GetValue("Nation").ToString()); 

     int geoId = GetUserGeoID(GEOCLASS_NATION); 
     string friendlyName = GetGeoFriendlyName(geoId); 
     Response.Write("GetUserGeoID: " + geoId + " - friendlyName: " + friendlyName + @". HKEY_CURRENT_USER\Control Panel\International\Geo - Nation: " + NationValue + " - " + GetGeoFriendlyName(NationValue)); 

     var iso2 = GetGeoIso2(geoId); 
     Response.Write(" - GetGeoIso2: " + iso2); 

     var regionGeo = new RegionInfo(iso2); 
     Response.Write(" - " + regionGeo.DisplayName + " - " + regionGeo.ISOCurrencySymbol); 

     var cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => c.Name.EndsWith(iso2)); 

     var culture = cultureInfo.ToList()[0]; 
     Response.Write("<br /> Culture for " + iso2 + ": " + culture.DisplayName + " - " + culture.DateTimeFormat.FullDateTimePattern); 
    } 
+0

真的,我使用'[DllImport(「kernel32.dll」)] static extern int GetUserGeoID(int geoId);' – Kiquenet 2016-03-14 09:54:36

相關問題