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 Explicit
Dim TimeZoneCol As Collection
Const ValueName As String = "Display"
Const MasterKey As String = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time 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 If
End Sub
Private 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 If
End Function
NOTE: The class MRegistr handles the registry reading issues. The combobox CboTimeZone fills MRegistr with the time zones.