The following code reads the time zone names stored in the registry and places those names in a combobox. The time zone names (there are about 50 or so) look like: “Greenwich Standard Time, Newfoundland Standard Time, Tasmania Standard Time,” etc.
Option ExplicitDim TimeZoneCol As CollectionConst ValueName As String = "Display"Const MasterKey As String = "SOFTWAREMicrosoftWindows NTCurrentVersionTime Zones"Private Sub Form_Load() Dim KeyCol As Collection 'be sure key exists If MRegistry.CheckRegistryKey(HKEY_LOCAL_MACHINE, MasterKey) Then 'retrieve all subkeys Set KeyCol = MRegistry.EnumRegistryKeys(MRegistry.HKEY_LOCAL_MACHINE, MasterKey) Dim TheKey As Variant Set TimeZoneCol = New Collection 'for each subkey, get the "Name" value For Each TheKey In KeyCol CboTimeZone.AddItem MRegistry.GetRegistryValue(MRegistry.HKEY_LOCAL_MACHINE, addSlash(MasterKey) & TheKey, ValueName, "") Next End IfEnd SubPrivate Function addSlash(ByVal sPath As String) As String sPath = Trim(sPath) If Len(sPath) > 0 Then If Right$(sPath, 1) "/" Then If Right$(sPath, 1) "" Then sPath = sPath & "" End If End If addSlash = sPath End IfEnd Function
NOTE: The class MRegistr handles the registry reading issues. The combobox CboTimeZone fills MRegistr with the time zones.