Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static ReadOnlyCollection<TimeZoneInfo> GetSystemTimeZones()
- {
- lock (s_internalSyncObject)
- {
- if (!s_allSystemTimeZonesRead)
- {
- PermissionSet set = new PermissionSet(PermissionState.None);
- set.AddPermission(new RegistryPermission(RegistryPermissionAccess.Read, @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"));
- set.Assert();
- using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones", RegistryKeyPermissionCheck.Default, RegistryRights.ExecuteKey))
- {
- if (key == null)
- {
- List<TimeZoneInfo> list;
- if (s_systemTimeZones != null)
- {
- list = new List<TimeZoneInfo>(s_systemTimeZones.Values);
- }
- else
- {
- list = new List<TimeZoneInfo>();
- }
- s_readOnlySystemTimeZones = new ReadOnlyCollection<TimeZoneInfo>(list);
- s_allSystemTimeZonesRead = true;
- return s_readOnlySystemTimeZones;
- }
- foreach (string str in key.GetSubKeyNames())
- {
- TimeZoneInfo info;
- Exception exception;
- TryGetTimeZone(str, false, out info, out exception);
- }
- }
- IComparer<TimeZoneInfo> comparer = new TimeZoneInfoComparer();
- List<TimeZoneInfo> list2 = new List<TimeZoneInfo>(s_systemTimeZones.Values);
- list2.Sort(comparer);
- s_readOnlySystemTimeZones = new ReadOnlyCollection<TimeZoneInfo>(list2);
- s_allSystemTimeZonesRead = true;
- }
- return s_readOnlySystemTimeZones;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement