Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

DST Workaround 2000 and NT

Status
Not open for further replies.

chipk

IS-IT--Management
Mar 23, 2006
1,226
US
If you don't have the patch from extended support for 2000, don't want to visit every computer and manually run tzedit, then this is for you.

This is working great for me; however, I still recommend exercising extreme caution as everyone does when modifying the registry (expecially when it's every computer on your network at once). Also, please understand the implications of this on any time-sensitive applications on your OSs. That being said, here are the requirements:

-Run from central location from a logon with admin rights on all PCs
-Have the REG.exe utility from the 2000 Resource Kit
-AND note that this is written for Eastern Standard Time, other time zones would require changes to reflect, but you should be able to work it from what I have here.
-Also note that you will need a text file with a list of computers to run this against:

Code:
::Update timezone
reg add "\\%1\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Eastern Standard Time" /v Display /t REG_SZ /d "(GMT-05:00) Eastern Time (US & Canada)" /f
reg add "\\%1\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Eastern Standard Time" /v Dlt /t REG_SZ /d "Eastern Daylight Time" /f
reg add "\\%1\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Eastern Standard Time" /v Std /t REG_SZ /d "Eastern Standard Time" /f
reg add "\\%1\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Eastern Standard Time" /v MapID /t REG_SZ /d "38,39" /f
reg add "\\%1\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Eastern Standard Time" /v Index /t REG_DWORD /d 35 /f
reg add "\\%1\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Eastern Standard Time" /v TZI /t REG_BINARY /d 2c01000000000000c4ffffff00000b0000000100020000000000000000000300000002000200000000000000 /f

::Update tzinfo
reg add \\%1\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v Bias /t REG_DWORD /d 300 /f
reg add \\%1\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v StandardName /t REG_SZ /d "Eastern Standard Time" /f
reg add \\%1\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v StandardBias /t REG_DWORD /d 0 /f
reg add \\%1\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v StandardStart /t REG_BINARY /d 00000b00010002000000000000000000 /f
reg add \\%1\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v DaylightName /t REG_SZ /d "Eastern Daylight Time" /f
reg add \\%1\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v DaylightBias /t REG_DWORD /d 4294967236 /f
reg add \\%1\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v DaylightStart /t REG_BINARY /d 00000300020002000000000000000000 /f
reg add \\%1\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v ActiveTimeBias /t REG_DWORD /d 300 /f

Copy this into a batch file and call it from the command line with a FOR loop, like so:

Code:
FOR /F %1 in (pclist.txt) DO batchfilename.bat %1 >> output.log

The %1 will be passed to the batch file as stdin and fill in the %1's in the batch file with the computer name. The list should not have \\ backslashes in front of the computer names. If you don't filter these out of the text file, you'll need to remove from the batch file.

I highly recommend getting your XP clients out of this list somehow, even though it wouldn't hurt them to run this (I've tested). I did a netview to get the computer list, piped this to a couple other commands, and then did a "if exist" on the kb928388.log file in \\pcname\admin$ to find the already patched (and assumed to be XP) machines.
 
If you want to truly "fix" your Windows 2000 systems, you need to follow KB914387, It will fix all of the time zone issues, not just Eastern.

I'm Certifiable, not cert-ified.
It just means my answers are from experience, not a book.
 
But you still have to do it manually. My point is that using the reg.exe utility is that you can do every computer at the same time. Of course, if you want to do it the slow way, feel free. Most people don't care about every time zone, just the one they're in.
 
Not sure why you think you have to do it manually. Did you read KB 914387? They provide the reg fix, the script, and explicit directions on how to roll it out to your systems via GPO.

While most people may not need to worry about other times zones, someone might, read your "fix", and still be screwed when their application fails because it needed the correct time for another zone.

I think I'll stick with MS's solution, it's much better.

I'm Certifiable, not cert-ified.
It just means my answers are from experience, not a book.
 
DaveToo,

I was getting ready to post about w2k pro dst fix because I could not find it at all. They kept on giving me kb931836 and I could not find the fix for 2000 machines. Even when you google it you get the KB931836 for winxp machines. Good looking out and I think I will take the slow road on this one. Oh 1 quick question:

Does the KB914387 fix the outlook problem also or is that another patch I have to implement?

Thanks,
Malik

PS good info chipk but in a work environment I rather make sure it is fixed the microsoft way so if something goes wrong I can blame microsoft and not you...LOL


Malik
where your problems are our solutions!!
 
This does not fix the Outlook problem. The simplest way to evaluate what you need to do for all MS products effected by this is to go here choose the IT Professinal option and select all of the products you have in your environment. It provides exactly the KB's and info you'll need for each of your products.

I'm Certifiable, not cert-ified.
It just means my answers are from experience, not a book.
 
Well, allow me to eat crow. I give myself a "failure to follow instructions". I had problems pushing this out with a *logon* script because of user permissions, but was applying the GPO incorrectly. Should have been applying it as a startup script. Thanks Davetoo, for correcting me. I really thought I was on to something cool. Anyway, although the method I posted "works" (kinda), the obvious preference would be to do it the right way and fix all time zones.
 
Ok, I too found the MS KB article for Win2K Pro/Server and wrote a script to do all the registry updates and run the vbs file for reloading the time zone information.

My question comes with Microsoft's vbs script near the bottom of the "automated" method.

They have the following in their script:

Code:
'Enumerate the subkeys in the time zone database
const HKEY_LOCAL_MACHINE = &H80000002
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
szTzsKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"
objReg.EnumKey HKEY_LOCAL_MACHINE, szTzsKeyPath, arrTzSubKeys

'Step through the time zones to find the matching Standard Name
szTzKey = "<Unknown>"
For Each subkey In arrTzSubKeys
    If (objSh.RegRead("HKLM\" & szTzsKeyPath & "\" & subkey & "\Std") = szStandardName) Then
        'Found matching StandardName, now store this time zone key name
        szTzKey = subkey
    End If
Next 

If szTzKey = "<Unknown>" Then
       'Write entry to the Application event log stating that the update has failed to execute
       objSh.LogEvent 1, "DST 2007 Registry Update and Refresh failed to execute on this computer.  Time zones failed to enumerate properly or matching time zone not found."
       Wscript.Quit 0
End If

The only problem is, when I open up RegEdit and navigate to HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation, there are no subkeys at all. Just value entrys. I have a value named StandardName that is set to "Eastern Standard Time" and a few other values, but again, no sub-keys.

So the question is, is the KB article wrong? If not, how (and why) is my setup different? How would I apply the solution in the KB article.

Thanks for your help!!

Craig E. Shea
IT Coordinator
TTEC
 
Well, I never got it to work, which is why I came up with my little method to do the Eastern timezone only. Maybe Davetoo will have the answer.
 
Hehe....

I mis-read the KB vbs code... They are not enumerating the subkeys under the TimeZoneInformation key; rather, they are enumerating the subkeys in the "Time Zones" subkey under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion. They compare the subkey names to the entry StandardName in HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. Then, they apply the settings in the "Std" subkey in the registry Time Zones database to your CurrentControlSet TimeZoneInformation subkey.

I had it backwards.

I think it's just about time to go home for the day... ;)

Thanks anyway chipk!


Craig E. Shea
IT Coordinator
TTEC
 
Correct, the values are stored in the Windows NT\CurrentVersion\Timezone keys.

I'm Certifiable, not cert-ified.
It just means my answers are from experience, not a book.
 
I have completed my script (yeah yeah, a day late, and I'm always a dollar short... ;) ). It is contained in one VBS file called dst_updater.vbs. It uses WMI to access the registry and make all the changes to the Time Zones database as outlined at the MS KB article (I took the .reg file and did the same thing using vbs with WMI) and then included MS's vbs code at the bottom of the KB article.

There's no error checking (save what MS put in their little vbs snippet), but I have tested it on 3 Win2K Pro machines and one NT4 SP6a Enterprise Server. The only prerequisites are that WSH v5.6 be installed and, in the case of NT4 that WMINT4.EXE be installed (available from MS via download, must pass validation to get it). BTW, when you install WMINT4, it will tell you it needs to reboot. Just hit Cancel. It doesn't need to.

Then, double-click the script to run it. Double-click the time if you wish on the desktop and click OK and all is done.

If anyone wants the script, please reply to this post. The best way to distribute this would be for me to post this on here in a code block...as many e-mail filters would probably block mine as a virus or something... Ahh technology, don't you love it?

Have a good night everyone. (Or for those half-way around the world, good morning, and have a good day!)


Craig E. Shea
IT Coordinator
TTEC
 
That's how I would have liked to do it if I had the skill with vbs, but alas, I must go with half-baked workarounds.
 
I am in the process of updating the script to detect whether you are running a Windows 9x machine or an NT-based machine and then perform the appropriate actions.

Believe it or not, there are actually people (and businesses) out there that still use Windows 9x. Hehe, my company is one of them. We're about to upgrade to a native 2000 environment, though! Woohoo! Hehe... yeah, let's just say that we don't need to be on the cutting edge of technology. But when the transition occurs, it will still be a nightmare to support the environment, as Windows 2000 is in extended support.

I've had it with M$. Next migration will be Linux, for sure.

In any event, once the changes are made to the script, I'll post the entire script in this thread for those of you who might need to re-install "legacy" machines at a later date.




Craig E. Shea
IT Coordinator
TTEC
 
I still have a fairly large install base of NT 4.0 clients, which you can't push GPO to, so that's another reason I had to come up with a clunky work-around. I have maybe a couple 95 machines, but they are going away in our next wave of replacements.
 
Hello everyone....

Well, where I work, I happen to be not only the IT Administrator, but a whole lot of other things, too. We have a person who has been out and I've had to help pick up the slack. I just wanted to let you all know I still plan on posting that script once it is completed.

While I'm writing, I'll poll you guys for suggestions...

1) The script requires WSH 5.6 in order to run (I don't care to make it WSH version agnostic.) How can I check at the outset that WSH 5.6 is installed?

[To answer my own question, I guess I could take a known WSH 5.6 file and check it's version. But if you have an easier way....let me know.]

2) On WinNT, I can write an event to the Event Log. I don't believe there is an "Event Log" per se in Win9x. Is there an "event log" I'm not aware of or would it be best for me to just write a text log file to disk?

3) I was going to test for the type of OS on which I'm running by using WMI and the Win32_OperatingSystem.Version. However, I see that in the registry in WinNT the OS version is labeled as 4.0 (and then there are build keys and service pack levels, etc.). In Win98, for example, the OS version in the registry is 4.10. Will WMI return the registry values to which I have referred, or will it return a unique value for Win9x vs. WinNT?

The answers to these questions will help me finish this script faster.

Thanks.



Craig E. Shea
IT Coordinator
TTEC
 
Hello All:

I finished adding Win9x support, but it doesn't quite work yet and I haven't had the time to figure out why.

Well, it turns out figuring out the version of WSH isn't hard...hehe, WScript.Version...who would've thought? Yeah, well, I didn't have time to check the last time I updated this post.

I still don't know about whether there is any Event Logging facility in Win9x, but I'm thinking not...so I would have to write a logfile. However, at this point in time, I perform no logging whatsoever for Win9x. In addition, this script will only support Windows 98 and up. I found out how to accurately determine the version of the OS via WMI.

Right now, the script runs on Win98 without errors, however, it doesn't work. Exactly. It runs, but no registry changes are made, so I'm stuck. If anyone knows anything about using the WMI registry provider on Win98, please enlighten me. Otherwise, I'll continue to research it.



Craig E. Shea
IT Coordinator
TTEC
 
Well, I found a small mistake in my code that ended up not writing all the values needed into the Registry. Actually, the values aren't strictly needed... In passing the DST changes, the US Congress reserved the right to regress the DST changes to the previous dates if the expected energy savings weren't realized. Therefore, MS created a way to "backup" the original values by providing the "Dynamic DST" subkeys underneath certain affected Time Zones. This information was not stored. Only Windows XP and Vista support the Dynamic DST key, but on Windows 2000, the easy fix is to run a script that would read the 2006 subkey of the Dynamic DST subkey to restore the old TZ settings.

If that's not bad enough, here's another doozey.... Windows NT has different subkey names than Windows 2000 for the Time Zones stored in the registry, as does Windows 9x!!! Since I don't have a Windows 95 machine to test on (and why would I?), as stated before, my script will only support Win98 on up. But boy, this is going to be a real pain now, as I have 3 different sets of registry changes to make. Not a big deal, it's just a matter of making sure I use the right Registry path in which to write the needed TZ changes.

All of that to say it's going to be just a bit more time. BTW, that explains why my script appeared to work on Win98, but didn't. In other words, the script ran without errors, but no actual registry changes were made because none of the keys being changed exist on Win98. Using the WMI Registry provider, the subkey must exist in order to modify or create a value entry. In WindowsNT 4.0, a slightly different result was seen. The Time Zone information was updated for Eastern Standard Time (that's where I am) and a few select other TZ's where the key names happen to be the same. Also the time was updated, but not all the values that need to be written to the registry were written due to the same problem as described for Win98.

Hopefully I'll have this done in just a few hours. I'll probably post it tomorrow for those of you who want it to update new installs of "legacy" OSes for whatever reason.

Thanks for your patience.



Craig E. Shea
IT Coordinator
TTEC
 
I finally had enough time to finish the script. It is far from the most perfect, beautiful code I have ever written...more like, it's quick and dirty but gets the job done.

This script should not cause any errors to the best of my knowledge. It should work on Windows 98, ME, NT4 (Wks or Servers), 2000 (Pro or Servers). It WILL NOT work on Windows 95 or prior or Windows XP or later (for XP or later, please use the MS patch).

This script is being released under GPLv2. The script now follows.

Code:
'
' Daylight Savings Time (DST) Update Script for Microsoft Windows 98 through Windows 2000 Operating Systems
'
' This script will update your computer's registry with the new DST rules instituted by the United
' States Congress in 2005 taking effect in 2007. It will also update other known DST time zone 
' changes made by other countries possibly as a result of the change in the United States or for
' their own reasons.
'
' The changes this script makes are done according to the Microsoft Support Knowledgebase article
' KB914387 found at [URL unfurl="true"]http://support.microsoft.com/kb/914387/en-us[/URL] as of 9 March 2007.
'
' Copyright (C) 2007  Craig.E.Shea
'
' This program is free software; you can redistribute it and/or modify it under the terms of the
' GNU General Public License as published by the Free Software Foundation; either version 2 of the
' License, or (at your option) any later version.
'
' This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
' even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
' General Public License for more details.
'
' You should have received a copy of the GNU General Public License along with this program; if not,
' write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
'
' In addition, you may view the full terms of this license at:
' [URL unfurl="true"]http://www.fsf.org/licensing/licenses/info/GPLv2.html[/URL]
'
'
' Date Created: 09 March 2007 15:36:35 EST
' Author: Craig E. Shea
' Company: NexOS Creations

' CONSTANTS
Const HKLM = &H80000002               ' HKEY_LOCAL_MACHINE
Const REG_SZ = 1
Const REG_BINARY = 3
Const REG_DWORD = 4

' This function will determine whether a key exists in the registry.
' The parameter 'key' is the full path to the subkey, not including HKEY_LOCAL_MACHINE or
' HKEY_CURRENT_USER for example. The parameter 'hkey' is the registry hive/branch in which to begin,
' searching for the key specefied by the numeric constant that represents the hive. This script only
' makes use of HKLM, so that is the only registry hive constant that is defined.
Function KeyExists(hkey, key) 'As Boolean
  Dim arrSubKeys()  ' An [out] parameter to hold the results....
  Dim oReg
  
  Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & _
    "\root\default:StdRegProv")
  
  If oReg.EnumKey(hkey, key, arrSubKeys) = 0 Then
      KeyExists = True
  Else
      KeyExists = False
  End If
  
  Set oReg = Nothing
End Function

'*********************   M A I N   P R O G R A M   S T A R T S   H E R E   *************************

' Step 00.: Hehe...ran out of numbers.... OK, first, I don't care if this script doesn't work on
'           other people's machines...it works on mine. A majority of this code should run on any
'           machine with the prerequisite software installed. If not, I leave it as an exercise to
'           the reader to modify it for his/her own purposes. At least you'll have the algorithm
'           within this code to update the DST settings on your Pre-XP machines....
'
'           Without further adieu, the first thing we must check for is WSH version 5.6.
If WScript.Version < 5.6 Then
  oShell.Popup "Windows Script Host (WSH) version 5.6 is required to run this script." & chr(13) & _
    chr(10) & "You currently have WSH version " & WScript.Version & " installed." & chr(13) & _
    chr(10) & "Please upgrade WSH in order to run this script.", 15, "Incompatable WSH Version", _
    vbCritical+vbOk

  WScript.Quit 0
End If

' Step 0.: Determine if we are running on Windows 9x- or NT-based machine...
Set oShell = WScript.CreateObject("WScript.Shell")

' String representing the local computer name in the WMI namespace
strComputer = "."
' String representing the path to specific registry subkeys we are interested in manipulating
strKeyPath = ""

' Get a WMIService object...this has the dual purpose of telling us whether WMI is installed. If it's
' not, we quit, because we need WMI to write the registry values (that's what I used, anyway. If
' you want to change my script, feel free, but the Windows 2000 Scripting Guide had no information
' on whether WShell.RegXXXXXX functions included a routine that could be used to add registry values,
' let alone REG_BINARY values.
On Error Resume Next
  Set colWin32_OS = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & _
    "\root\cimv2").InstancesOf("Win32_OperatingSystem")
    
  If Err.Number <> 0 Then
    oShell.Popup "It appears the Windows Management Instrumentation (WMI) interface is not installed." & _
      chr(13) & chr(10) & "WMI is required to run this script. It is freely downloadable from Microsoft.", _
      15, "WMI Not Installed", vbCritical+vbOk
      
    Set oShell = Nothing 
    WScript.Quit 0
  End If
On Error Goto 0

' Get the OS version, break it down into major/minor version and get the OS Type code...
Dim ver , majVer, minVer, t

For Each oWin32_OS in colWin32_OS
  ver = oWin32_OS.Properties_("Version")
  t = oWin32_OS.Properties_("OSType")
Next

' We don't need this anymore.
Set colWin32_OS = Nothing

majVer = Left(ver, InStr(ver, ".") - 1)
minVer = Mid(ver, InStr(ver, ".") + 1, Len(ver))

If InStr(minVer, ".") Then
  minVer = Left(minVer, InStr(minVer, ".") - 1)
End If

' Now let's determine the Operating System Type...
Select Case t
  Case 17 ' We are running some version of Win9x-based OS
    If minVer = 0 Then
      oShell.Popup "You are running on Windows95. Windows95 is unsupported." & chr(13) & chr(10) & _
        "You really should upgrade to Windows XP.", 15, "Unsupported Operating System", _
        vbCritical+vbOk

      WScript.Quit 0
    ElseIf minVer = "10" Or minVer = "90" Then ' We're running on Windows 98 or Windows ME
      ver = "9x"
    End If
  Case 18 ' We are running some version of WinNT-based OS
    If majVer = 5 Then ' We're running on Windows 2000 or above.
      If minVer <> 0 Then ' We're running on Windows XP or above. Don't do that, use the MS patch.
        oShell.Popup "You are running Windows XP or above." & chr(13) & chr(10) & _
          "It is highly recommended that you download the patch provided by Microsoft Corp. instead.", _
          15, "Unsupported Operating System", vbCritical+vbOk

          oShell.Popup "Time zone information has not been updated because you are running Windows XP or above.", _
          15, "Time Zone Update Failure", vbCritical+vbOk

        oShell.LogEvent 1, "DST 2007 Registry Update and Refresh failed to update the time zone information on this computer." & _
          "You are running the DST Update Script on an unsupported operating system: Windows XP/2003/Vista"

          WScript.Quit 0
      Else ' We're running on Windows 2000.
        ver = "NT"
      End If
    ElseIf majVer = 4 Then ' We're running on Windows NT 4.0
      ver = "NT"
    Else ' We're running on Windows NT 3.5, which is unsupported.
      oShell.Popup "You are running Windows NT 3.x. Windows NT 3.x is unsupported." & chr(13) & chr(10) & _
        "You really should upgrade to Windows Server 2003", 15,  "Unsupported Operating System", _
        vbCritical+vbOk

      WScript.Quit 0
    End If
  Case Else ' You should never hit this...but just in case....
    oShell.Popup "It appears you are not running a Microsoft Operating System such as Windows XP," & _
      chr(13) & chr(10) & "but are still able to run VBS WSH scripts." & chr(13) & chr(10) & _
      "This script is only meant to update the Time Zone information on Microsoft Windows 98 and above.", _
      15, "Unsupported Operating System", vbCritical+vbOK
      
      WScript.Quit 0
End Select

' Step 1.: Export the existing Time Zone information contained in the registry and store in
'          the directory in which this script is executing in the following manner:
'
'     %windir%\Temp\Pre2007TZDB.reg
'     %windir%\Temp\Pre2007TZInfo.reg
'
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

' Check to see if %windir%\Temp exists, if not, create it.
If Not fso.FolderExists(oShell.Environment("Process").Item("windir") & "\Temp") Then
  oShell.CurrentDirectory = fso.CreateFolder(oShell.Environment("Process").Item("windir") & "\Temp")
Else
  oShell.CurrentDirectory = fso.GetFolder(oShell.Environment("Process").Item("windir") & "\Temp")
End If

' Store the registry path to the Time Zones subkey and backup the registry keys containing 
' Time Zone Information.
If ver = "NT" Then ' We're running on a NT-based OS
  strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\"
  oShell.Run "regedit.exe /e " & oShell.CurrentDirectory & "\Pre2007TZDB.reg " & _
    """HKEY_LOCAL_MACHINE\" & Left(strKeyPath, Len(strKeyPath) - 1) & """", 0, True
Else ' We're running on a Win9x-based OS.
  strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones\"
  oShell.Run "regedit.exe /e " & oShell.CurrentDirectory & "\Pre2007TZDB.reg " & _
    """HKEY_LOCAL_MACHINE\" & Left(strKeyPath, Len(strKeyPath) - 1) & """", 0, True
End If

oShell.Run "regedit.exe /e " & oShell.CurrentDirectory & "\Pre2007TZInfo.reg " & _
  "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation", 0, True
  

' Make sure that backup files have been created.
Dim r     ' Holds result of the dialog box if backup files weren't created.

If Not fso.FileExists(oShell.CurrentDirectory & "\Pre2007TZDB.reg") Or _
   Not fso.FileExists(oShell.CurrentDirectory & "\Pre2007TZInfo.reg") Then
  ' Warn and ask the user if the script should continue. If this script is being run unattended,
  ' the dialog will dismiss itself in 30 seconds and the script will automatically terminate.
  r = oShell.Popup("The Time Zone information contained in the registry was unable to be backed up." & _
    chr(13) & chr(10) & chr(13) & chr(10) & "Do you wish to continue running this script anyway?", _
    30, "Registry Backup Failed", vbYesNo+vbExclamation+vbDefaultButton2)
  
  If r = -1 Or r = 7 Then  ' If the dialog box timed out or the user clicked "No"
    If ver = "NT" Then
      oShell.LogEvent 1, "DST 2007 Registry Update and Refresh failed to update the time zone information on this computer." & _
          "A backup of the original registry settings could not be created. Either the user indicated not to " & _
          "continue the update or this script timed-out waiting for a response on how to proceed. Please try " & _
          "running this script again."
    End If
    
    Set fso = Nothing
    Set oShell = Nothing
    WScript.Quit 0
  End If
End If

' The FileSystemObject is no longer needed...discarding
Set fso = Nothing

' Step 2. Write out all the new Time Zone Information into the registry.
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & _
  "\root\default:StdRegProv")
  
' These variables will hold an array of subkeys and entries and value types in the Time Zones 
' subkeys. Also, they will hold the values (value and bValue--which is an array to hold the value
' of REG_BINARY type entries--of the legacy Win9x entries so that they can be "copied" into the
' newly created entries following the WinNT/2k based naming paradigm.
Dim arrSubkeys, arrEntries, arrEntryNames, arrValueTypes, value, bValue()

With oReg
  ' First, if we're running on Win9x, let's enumerate all the Time Zone subkeys and change their
  ' names to the Win2k subkey naming paradigm, specifically, "<time zone name> Standard Time". This
  ' will greatly reduce the amount of code I have to write. Also, it will make it a whole lot more
  ' simpler.
  If ver = "9x" Then
    .EnumKey HKLM, Left(strKeyPath, Len(strKeyPath) - 1), arrSubkeys
  
    For Each subkey In arrSubkeys
      .EnumValues HKLM, strKeyPath & subkey, arrEntryNames, arrValueTypes
        
      .CreateKey HKLM, strKeyPath & subkey & " Standard Time"
        
      For i = 0 To UBound(arrEntryNames)
        Select Case arrValueTypes(i)
          Case REG_SZ
            .GetStringValue HKLM, strKeyPath & subkey, arrEntryNames(i), value
            .SetStringValue HKLM, strKeyPath & subkey & " Standard Time", arrEntryNames(i), value
            .DeleteValue HKLM, strKeyPath & subkey, arrEntryNames(i)
          Case REG_DWORD
            .GetDWORDValue HKLM, strKeyPath & subkey, arrEntryNames(i), value
            .SetDWORDValue HKLM, strKeyPath & subkey & " Standard Time", arrEntryNames(i), value
            .DeleteValue HKLM, strKeyPath & subkey, arrEntryNames(i)
          Case REG_BINARY
            .GetBinaryValue HKLM, strKeyPath & subkey, arrEntryNames(i), bValue
            .SetBinaryValue HKLM, strKeyPath & subkey & " Standard Time", arrEntryNames(i), bValue
            .DeleteValue HKLM, strKeyPath & subkey, arrEntryNames(i)
        End Select
      Next
        
      ' Delete the old Time Zone subkey.
      .DeleteKey HKLM, strKeyPath & subkey
    Next
  End If
  
  ' Alaskan Standard Time
  ' Not all Win2K Time Zones exist on NT4/9x and vice versa. I don't care if Win9x/NT time zones
  ' don't exist on Win2k, as we are only mostly concerned with Win2k being updated and that the NT
  ' and Win9x machines all have the same TZ info as Win2k. Therefore, make sure the time zone key
  ' exists on the Win9x/NT machine, and if not, create it. This will be done for each TZ.
  If Not KeyExists(HKLM, strKeyPath & "Alaskan Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Alaskan Standard Time"
  End If
  
  .SetStringValue HKLM, strKeyPath & "Alaskan Standard Time", "Display", "(GMT-09:00) Alaska"
  .SetStringValue HKLM, strKeyPath & "Alaskan Standard Time", "Dlt", "Alaskan Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Alaskan Standard Time", "Std", "Alaskan Standard Time"
  .SetStringValue HKLM, strKeyPath & "Alaskan Standard Time", "MapID", "30,31"
  .SetDWORDValue HKLM, strKeyPath & "Alaskan Standard Time", "Index", &H00000003
  arrTZI = Array(&H1c,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Alaskan Standard Time", "TZI", arrTZI
    
  ' Alaskan Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Alaskan Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Alaskan Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "Alaskan Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&H1c,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Alaskan Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&H1c,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Alaskan Standard Time\Dynamic DST", "2007", arrTZI
  
  ' Atlantic Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Atlantic Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Atlantic Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Atlantic Standard Time", "Display", "(GMT-04:00) Atlantic Time (Canada)"
  .SetStringValue HKLM, strKeyPath & "Atlantic Standard Time", "Dlt", "Atlantic Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Atlantic Standard Time", "Std", "Atlantic Standard Time"
  .SetStringValue HKLM, strKeyPath & "Atlantic Standard Time", "MapID", "40,41"
  .SetDWORDValue HKLM, strKeyPath & "Atlantic Standard Time", "Index", &H00000032
  arrTZI = Array(&Hf0,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Atlantic Standard Time", "TZI", arrTZI
  
  ' Atlantic Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Atlantic Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Atlantic Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "Atlantic Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&Hf0,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Atlantic Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&Hf0,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Atlantic Standard Time\Dynamic DST", "2007", arrTZI
  
  ' AUS Eastern Standard Time
  If Not KeyExists(HKLM, strKeyPath & "AUS Eastern Standard Time") Then
    .CreateKey HKLM, strKeyPath & "AUS Eastern Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "AUS Eastern Standard Time", "Display", "(GMT+10:00) Canberra, Melbourne, Sydney"
  .SetStringValue HKLM, strKeyPath & "AUS Eastern Standard Time", "Dlt", "AUS Eastern Daylight Time"
  .SetStringValue HKLM, strKeyPath & "AUS Eastern Standard Time", "Std", "AUS Eastern Standard Time"
  .SetStringValue HKLM, strKeyPath & "AUS Eastern Standard Time", "MapID", "20,21"
  .SetDWORDValue HKLM, strKeyPath & "AUS Eastern Standard Time", "Index", &H000000ff
  arrTZI = Array(&Ha8,&Hfd,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H03,&H00, _
    &H00,&H00,&H05,&H00,&H03,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0a,&H00,&H00,&H00,&H05,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "AUS Eastern Standard Time", "TZI", arrTZI
  
  ' Azerbaijan Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Azerbaijan Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Azerbaijan Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Azerbaijan Standard Time", "Dlt", "Azerbaijan Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Azerbaijan Standard Time", "Std", "Azerbaijan Standard Time"
  .SetStringValue HKLM, strKeyPath & "Azerbaijan Standard Time", "Display", "(GMT+04:00) Baku"
  .SetDWORDValue HKLM, strKeyPath & "Azerbaijan Standard Time", "Index", &H80000040
  arrTZI = Array(&H10,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H05,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H05,_
    &H00,&H04,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Azerbaijan Standard Time", "TZI", arrTZI
  
  ' Caucasus Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Caucasus Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Caucasus Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Caucasus Standard Time", "Display", "(GMT+04:00) Yerevan"
  .SetStringValue HKLM, strKeyPath & "Caucasus Standard Time", "Dlt", "Caucasus Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Caucasus Standard Time", "Std", "Caucasus Standard Time"
  .SetStringValue HKLM, strKeyPath & "Caucasus Standard Time", "MapID", "8,9"
  .SetDWORDValue HKLM, strKeyPath & "Caucasus Standard Time", "Index", &H000000aa
  arrTZI = Array(&H10,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H03,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H05,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Caucasus Standard Time", "TZI", arrTZI
  
  ' Cen. Australia Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Cen. Australia Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Cen. Australia Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Cen. Australia Standard Time", "Display", "(GMT+09:30) Adelaide"
  .SetStringValue HKLM, strKeyPath & "Cen. Australia Standard Time", "Dlt", "Australia Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Cen. Australia Standard Time", "Std", "Australia Standard Time"
  .SetStringValue HKLM, strKeyPath & "Cen. Australia Standard Time", "MapID", "-1,76"
  .SetDWORDValue HKLM, strKeyPath & "Cen. Australia Standard Time", "Index", &H000000fa
  arrTZI = Array(&Hc6,&Hfd,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H03,&H00, _
    &H00,&H00,&H05,&H00,&H03,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0a,&H00,&H00,&H00,&H05,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Cen. Australia Standard Time", "TZI", arrTZI
  
  ' Central Brazilian Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Central Brazilian Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Central Brazilian Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Central Brazilian Standard Time", "Display", "(GMT-04:00) Manaus"
  .SetStringValue HKLM, strKeyPath & "Central Brazilian Standard Time", "Dlt", "Central Brazilian Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Central Brazilian Standard Time", "Std", "Central Brazilian Standard Time"
  .SetDWORDValue HKLM, strKeyPath & "Central Brazilian Standard Time", "Index", &H80000048
  arrTZI = Array(&Hf0,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H02,&H00, _
    &H00,&H00,&H05,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0b,&H00,&H00,&H00,&H01,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Central Brazilian Standard Time", "TZI", arrTZI
  
  ' Central Brazilian Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Central Brazilian Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Central Brazilian Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "Central Brazilian Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&Hf0,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H02,&H00, _
    &H00,&H00,&H02,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0b,&H00,&H00,&H00,&H01,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Central Brazilian Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&Hf0,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H02,&H00, _
    &H00,&H00,&H05,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0b,&H00,&H00,&H00,&H01,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Central Brazilian Standard Time\Dynamic DST", "2007", arrTZI
  
  ' Central Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Central Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Central Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Central Standard Time", "Display", "(GMT-06:00) Central Time (US & Canada)"
  .SetStringValue HKLM, strKeyPath & "Central Standard Time", "Dlt", "Central Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Central Standard Time", "Std", "Central Standard Time"
  .SetStringValue HKLM, strKeyPath & "Central Standard Time", "MapID", "36,37"
  .SetDWORDValue HKLM, strKeyPath & "Central Standard Time", "Index", &H00000014
  arrTZI = Array(&H68,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Central Standard Time", "TZI", arrTZI
  
  ' Central Standard Time (Mexico)
  If Not KeyExists(HKLM, strKeyPath & "Central Standard Time (Mexico)") Then
    .CreateKey HKLM, strKeyPath & "Central Standard Time (Mexico)"
  End If
  .SetStringValue HKLM, strKeyPath & "Central Standard Time (Mexico)", "Display", "(GMT-06:00) Guadalajara, Mexico City, Monterrey - New"
  .SetStringValue HKLM, strKeyPath & "Central Standard Time (Mexico)", "Dlt", "Central Daylight Time (Mexico)"
  .SetStringValue HKLM, strKeyPath & "Central Standard Time (Mexico)", "Std", "Central Standard Time (Mexico)"
  .SetDWORDValue HKLM, strKeyPath & "Central Standard Time (Mexico)", "Index", &H80000043
  arrTZI = Array(&H68,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Central Standard Time (Mexico)", "TZI", arrTZI
  
  ' Central Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Central Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Central Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "Central Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&H68,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Central Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&H68,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Central Standard Time\Dynamic DST", "2007", arrTZI
  
  ' E. Europe Standard Time
  If Not KeyExists(HKLM, strKeyPath & "E. Europe Standard Time") Then
    .CreateKey HKLM, strKeyPath & "E. Europe Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "E. Europe Standard Time", "Display", "(GMT+02:00) Minsk"
  .SetStringValue HKLM, strKeyPath & "E. Europe Standard Time", "Dlt", "E. Europe Daylight Time"
  .SetStringValue HKLM, strKeyPath & "E. Europe Standard Time", "Std", "E. Europe Standard Time"
  .SetStringValue HKLM, strKeyPath & "E. Europe Standard Time", "MapID", "4,5"
  .SetDWORDValue HKLM, strKeyPath & "E. Europe Standard Time", "Index", &H00000073
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H03,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H05,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "E. Europe Standard Time", "TZI", arrTZI
  
  ' E. South America Standard Time
  If Not KeyExists(HKLM, strKeyPath & "E. South America Standard Time") Then
    .CreateKey HKLM, strKeyPath & "E. South America Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "E. South America Standard Time", "Display", "(GMT-03:00) Brasilia"
  .SetStringValue HKLM, strKeyPath & "E. South America Standard Time", "Dlt", "E. South America Daylight Time"
  .SetStringValue HKLM, strKeyPath & "E. South America Standard Time", "Std", "E. South America Standard Time"
  .SetStringValue HKLM, strKeyPath & "E. South America Standard Time", "MapID", "-1,80"
  .SetDWORDValue HKLM, strKeyPath & "E. South America Standard Time", "Index", &H00000041
  arrTZI = Array(&Hb4,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H02,&H00, _
    &H00,&H00,&H05,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0b,&H00,&H00,&H00,&H01,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "E. South America Standard Time", "TZI", arrTZI
  
  ' E. South America Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "E. South America Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "E. South America Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "E. South America Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&Hb4,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H02,&H00, _
    &H00,&H00,&H02,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0b,&H00,&H00,&H00,&H01,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "E. South America Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&Hb4,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H02,&H00, _
    &H00,&H00,&H05,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0b,&H00,&H00,&H00,&H01,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "E. South America Standard Time\Dynamic DST", "2007", arrTZI
  
  ' Eastern Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Eastern Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Eastern Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Eastern Standard Time", "Display", "(GMT-05:00) Eastern Time (US & Canada)"
  .SetStringValue HKLM, strKeyPath & "Eastern Standard Time", "Dlt", "Eastern Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Eastern Standard Time", "Std", "Eastern Standard Time"
  .SetStringValue HKLM, strKeyPath & "Eastern Standard Time", "MapID", "38,39"
  .SetDWORDValue HKLM, strKeyPath & "Eastern Standard Time", "Index", &H00000023
  arrTZI = Array(&H2c,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Eastern Standard Time", "TZI", arrTZI
  
  ' Eastern Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Eastern Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Eastern Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "Eastern Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&H2c,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Eastern Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&H2c,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Eastern Standard Time\Dynamic DST", "2007", arrTZI
  
  ' Egypt Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Egypt Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Egypt Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Egypt Standard Time", "Display", "(GMT+02:00) Cairo"
  .SetStringValue HKLM, strKeyPath & "Egypt Standard Time", "Dlt", "Egypt Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Egypt Standard Time", "Std", "Egypt Standard Time"
  .SetStringValue HKLM, strKeyPath & "Egypt Standard Time", "MapID", "4,68"
  .SetDWORDValue HKLM, strKeyPath & "Egypt Standard Time", "Index", &H00000078
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H09,&H00, _
    &H04,&H00,&H05,&H00,&H17,&H00,&H3b,&H00,&H3b,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H04,&H00,&H05,_
    &H00,&H17,&H00,&H3b,&H00,&H3b,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Egypt Standard Time", "TZI", arrTZI
  
  ' Georgian Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Georgian Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Georgian Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Georgian Standard Time", "Display", "(GMT+03:00) Tbilisi"
  .SetStringValue HKLM, strKeyPath & "Georgian Standard Time", "Dlt", "Georgian Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Georgian Standard Time", "Std", "Georgian Standard Time"
  .SetDWORDValue HKLM, strKeyPath & "Georgian Standard Time", "Index", &H80000047
  arrTZI = Array(&H4c,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Georgian Standard Time", "TZI", arrTZI  
  
  ' Greenwich Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Greenwich Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Greenwich Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Greenwich Standard Time", "Display", "(GMT) Casablanca, Monrovia, Reykjavik"
  .SetStringValue HKLM, strKeyPath & "Greenwich Standard Time", "Dlt", "Greenwich Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Greenwich Standard Time", "Std", "Greenwich Standard Time"
  .SetStringValue HKLM, strKeyPath & "Greenwich Standard Time", "MapID", "88,89"
  .SetDWORDValue HKLM, strKeyPath & "Greenwich Standard Time", "Index", &H0000005a
  arrTZI = Array(&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Greenwich Standard Time", "TZI", arrTZI
  
  ' GTB Standard Time
  If Not KeyExists(HKLM, strKeyPath & "GTB Standard Time") Then
    .CreateKey HKLM, strKeyPath & "GTB Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "GTB Standard Time", "Display", "(GMT+02:00) Athens, Bucharest, Istanbul"
  .SetStringValue HKLM, strKeyPath & "GTB Standard Time", "Dlt", "GTB Daylight Time"
  .SetStringValue HKLM, strKeyPath & "GTB Standard Time", "Std", "GTB Standard Time"
  .SetStringValue HKLM, strKeyPath & "GTB Standard Time", "MapID", "-1,67"
  .SetDWORDValue HKLM, strKeyPath & "GTB Standard Time", "Index", &H00000082
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H04,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H05,_
    &H00,&H03,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "GTB Standard Time", "TZI", arrTZI
  
  ' Iran Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Iran Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Iran Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Iran Standard Time", "Display", "(GMT+03:30) Tehran"
  .SetStringValue HKLM, strKeyPath & "Iran Standard Time", "Dlt", "Iran Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Iran Standard Time", "Std", "Iran Standard Time"
  .SetStringValue HKLM, strKeyPath & "Iran Standard Time", "MapID", "-1,72"
  .SetDWORDValue HKLM, strKeyPath & "Iran Standard Time", "Index", &H000000a0
  arrTZI = Array(&H2e,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Iran Standard Time", "TZI", arrTZI
  
  ' Iran Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Iran Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Iran Standard Time\Dynamic DST", "FirstEntry", &H000007d5
  .SetDWORDValue HKLM, strKeyPath & "Iran Standard Time\Dynamic DST", "LastEntry", &H000007d6
  arrTZI = Array(&H2e,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H09,&H00, _
    &H02,&H00,&H04,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Iran Standard Time\Dynamic DST", "2005", arrTZI
  arrTZI = Array(&H2e,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Iran Standard Time\Dynamic DST",  "2006", arrTZI
  
  ' Israel Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Israel Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Israel Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Israel Standard Time", "Display", "(GMT+02:00) Jerusalem"
  .SetStringValue HKLM, strKeyPath & "Israel Standard Time", "Dlt", "Jerusalem Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Israel Standard Time", "Std", "Jerusalem Standard Time"
  .SetStringValue HKLM, strKeyPath & "Israel Standard Time", "MapID", "-1,70"
  .SetDWORDValue HKLM, strKeyPath & "Israel Standard Time", "Index", &H00000087
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H09,&H00, _
    &H00,&H00,&H03,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H05,&H00,&H05,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time", "TZI", arrTZI
  
  ' Israel Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Israel Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "FirstEntry", &H000007d4
  .SetDWORDValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "LastEntry", &H000007e7
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2004", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hd5,&H07,&H0a,&H00, _
    &H00,&H00,&H09,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hd5,&H07,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2005", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hd6,&H07,&H0a,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hd6,&H07,&H03,&H00,&H00,&H00,&H1f,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hd7,&H07,&H09,&H00, _
    &H00,&H00,&H10,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hd7,&H07,&H03,&H00,&H00,&H00,&H1e,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2007", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hd8,&H07,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hd8,&H07,&H03,&H00,&H00,&H00,&H1c,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2008", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hd9,&H07,&H09,&H00, _
    &H00,&H00,&H1b,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hd9,&H07,&H03,&H00,&H00,&H00,&H1b,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2009", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hda,&H07,&H09,&H00, _
    &H00,&H00,&H0c,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hda,&H07,&H03,&H00,&H00,&H00,&H1a,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2010", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hdb,&H07,&H0a,&H00, _
    &H00,&H00,&H02,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hdb,&H07,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2011", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hdc,&H07,&H09,&H00, _
    &H00,&H00,&H17,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hdc,&H07,&H03,&H00,&H00,&H00,&H1e,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2012", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hdd,&H07,&H09,&H00, _
    &H00,&H00,&H08,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hdd,&H07,&H03,&H00,&H00,&H00,&H1d,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2013", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hde,&H07,&H09,&H00, _
    &H00,&H00,&H1c,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hde,&H07,&H03,&H00,&H00,&H00,&H1c,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2014", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&Hdf,&H07,&H09,&H00, _
    &H00,&H00,&H14,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hdf,&H07,&H03,&H00,&H00,&H00,&H1b,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2015", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&He0,&H07,&H0a,&H00, _
    &H00,&H00,&H09,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&He0,&H07,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2016", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&He1,&H07,&H09,&H00, _
    &H00,&H00,&H18,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&He1,&H07,&H03,&H00,&H00,&H00,&H1f,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2017", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&He2,&H07,&H09,&H00, _
    &H00,&H00,&H10,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&He2,&H07,&H03,&H00,&H00,&H00,&H1e,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2018", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&He3,&H07,&H0a,&H00, _
    &H00,&H00,&H06,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&He3,&H07,&H03,&H00,&H00,&H00,&H1d,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2019", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&He4,&H07,&H09,&H00, _
    &H00,&H00,&H1b,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&He4,&H07,&H03,&H00,&H00,&H00,&H1b,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2020", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&He5,&H07,&H09,&H00, _
    &H00,&H00,&H0c,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&He5,&H07,&H03,&H00,&H00,&H00,&H1a,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2021", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&He6,&H07,&H0a,&H00, _
    &H00,&H00,&H02,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&He6,&H07,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2022", arrTZI
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Israel Standard Time\Dynamic DST", "2023", arrTZI
  
  ' Jordan Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Jordan Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Jordan Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Jordan Standard Time", "Display", "(GMT+02:00) Amman"
  .SetStringValue HKLM, strKeyPath & "Jordan Standard Time", "Dlt", "Jordan Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Jordan Standard Time", "Std", "Jordan Standard Time"
  .SetStringValue HKLM, strKeyPath & "Jordan Standard Time", "Index", &H80000042
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H09,&H00, _
    &H05,&H00,&H05,&H00,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H04,&H00,&H05,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Jordan Standard Time", "TZI", arrTZI
  
  ' Mexico Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Mexico Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Mexico Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Mexico Standard Time", "Display", "(GMT-06:00) Guadalajara, Mexico City, Monterrey - Old" 
  .SetStringValue HKLM, strKeyPath & "Mexico Standard Time", "Dlt", "Mexico Daylight Time" 
  .SetStringValue HKLM, strKeyPath & "Mexico Standard Time", "Std", "Mexico Standard Time" 
  .SetStringValue HKLM, strKeyPath & "Mexico Standard Time", "MapID", "-1,85" 
  .SetDWORDValue HKLM, strKeyPath & "Mexico Standard Time", "Index", &H0000001e 
  arrTZI = Array(&H68,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Mexico Standard Time", "TZI", arrTZI
  
  ' Mexico Standard Time 2
  If Not KeyExists(HKLM, strKeyPath & "Mexico Standard Time 2") Then
    .CreateKey HKLM, strKeyPath & "Mexico Standard Time 2"
  End If
  .SetStringValue HKLM, strKeyPath & "Mexico Standard Time 2", "Display", "(GMT-07:00) Chihuahua, La Paz, Mazatlan - Old" 
  .SetStringValue HKLM, strKeyPath & "Mexico Standard Time 2", "Dlt", "Mexico Daylight Time 2" 
  .SetStringValue HKLM, strKeyPath & "Mexico Standard Time 2", "Std", "Mexico Standard Time 2" 
  .SetStringValue HKLM, strKeyPath & "Mexico Standard Time 2", "MapID", "34,35" 
  .SetDWORDValue HKLM, strKeyPath & "Mexico Standard Time 2", "Index", &H0000000d 
  arrTZI = Array(&Ha4,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Mexico Standard Time 2", "TZI", arrTZI
  
  ' Middle East Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Middle East Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Middle East Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Middle East Standard Time", "Display", "(GMT+02:00) Beirut"
  .SetStringValue HKLM, strKeyPath & "Middle East Standard Time", "Dlt", "Middle East Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Middle East Standard Time", "Std", "Middle East Standard Time"
  .SetDWORDValue HKLM, strKeyPath & "Middle East Standard Time", "Index", &H80000041
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H06,&H00,&H05,&H00,&H17,&H00,&H3b,&H00,&H3b,&H00,&He7,&H03,&H00,&H00,&H03,&H00,&H00,&H00,&H05,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Middle East Standard Time", "TZI", arrTZI
  
  ' Montevideo Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Montevideo Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Montevideo Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Montevideo Standard Time", "Display", "(GMT-03:00) Montevideo"
  .SetStringValue HKLM, strKeyPath & "Montevideo Standard Time", "Dlt", "Montevideo Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Montevideo Standard Time", "Std", "Montevideo Standard Time"
  .SetDWORDValue HKLM, strKeyPath & "Montevideo Standard Time", "Index", &H80000049
  arrTZI = Array(&Hb4,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H03,&H00, _
    &H00,&H00,&H02,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0a,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Montevideo Standard Time", "TZI", arrTZI
  
  ' Mountain Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Mountain Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Mountain Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Mountain Standard Time", "Display", "(GMT-07:00) Mountain Time (US & Canada)"
  .SetStringValue HKLM, strKeyPath & "Mountain Standard Time", "Dlt", "Mountain Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Mountain Standard Time", "Std", "Mountain Standard Time"
  .SetStringValue HKLM, strKeyPath & "Mountain Standard Time", "MapID", "34,35"
  .SetDWORDValue HKLM, strKeyPath & "Mountain Standard Time", "Index", &H0000000a
  arrTZI = Array(&Ha4,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Mountain Standard Time", "TZI", arrTZI
  
  ' Mountain Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Mountain Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Mountain Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "Mountain Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&Ha4,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Mountain Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&Ha4,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Mountain Standard Time\Dynamic DST", "2007", arrTZI
  
  ' Mountain Standard Time (Mexico)
  If Not KeyExists(HKLM, strKeyPath & "Mountain Standard Time (Mexico)") Then
    .CreateKey HKLM, strKeyPath & "Mountain Standard Time (Mexico)"
  End If
  .SetStringValue HKLM, strKeyPath & "Mountain Standard Time (Mexico)", "Display", "(GMT-07:00) Chihuahua, La Paz, Mazatlan - New"
  .SetStringValue HKLM, strKeyPath & "Mountain Standard Time (Mexico)", "Dlt", "Mountain Daylight Time (Mexico)"
  .SetStringValue HKLM, strKeyPath & "Mountain Standard Time (Mexico)", "Std", "Mountain Standard Time (Mexico)"
  .SetDWORDValue HKLM, strKeyPath & "Mountain Standard Time (Mexico)", "Index", &H80000044
  arrTZI = Array(&Ha4,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Mountain Standard Time (Mexico)", "TZI", arrTZI
  
  ' Myanmar Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Myanmar Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Myanmar Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Myanmar Standard Time", "Display", "(GMT+06:30) Yangon (Rangoon)"
  .SetStringValue HKLM, strKeyPath & "Myanmar Standard Time", "Dlt", "Myanmar Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Myanmar Standard Time", "Std", "Myanmar Standard Time"
  .SetStringValue HKLM, strKeyPath & "Myanmar Standard Time", "MapID", "-1,74"
  .SetDWORDValue HKLM, strKeyPath & "Myanmar Standard Time", "Index", &H000000cb
  arrTZI = Array(&H7a,&Hfe,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Myanmar Standard Time", "TZI", arrTZI
  
  ' Namibia Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Namibia Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Namibia Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Namibia Standard Time", "Display", "(GMT+02:00) Windhoek"
  .SetStringValue HKLM, strKeyPath & "Namibia Standard Time", "Dlt", "Namibia Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Namibia Standard Time", "Std", "Namibia Standard Time"
  .SetDWORDValue HKLM, strKeyPath & "Namibia Standard Time", "Index", &H80000046
  arrTZI = Array(&H88,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&H3c,&H00,&H00,&H00,&H00,&H00,&H09,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Namibia Standard Time", "TZI", arrTZI
  
  ' New Zealand Standard Time
  If Not KeyExists(HKLM, strKeyPath & "New Zealand Standard Time") Then
    .CreateKey HKLM, strKeyPath & "New Zealand Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "New Zealand Standard Time", "Display", "(GMT+12:00) Auckland, Wellington"
  .SetStringValue HKLM, strKeyPath & "New Zealand Standard Time", "Dlt", "New Zealand Daylight Time"
  .SetStringValue HKLM, strKeyPath & "New Zealand Standard Time", "Std", "New Zealand Standard Time"
  .SetStringValue HKLM, strKeyPath & "New Zealand Standard Time", "MapID", "78,79"
  .SetDWORDValue HKLM, strKeyPath & "New Zealand Standard Time", "Index", &H00000122
  arrTZI = Array(&H30,&Hfd,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H03,&H00, _
    &H00,&H00,&H03,&H00,&H03,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0a,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "New Zealand Standard Time", "TZI", arrTZI
  
  ' Newfoundland Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Newfoundland Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Newfoundland Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Newfoundland Standard Time", "Display", "(GMT-03:30) Newfoundland"
  .SetStringValue HKLM, strKeyPath & "Newfoundland Standard Time", "Dlt", "Newfoundland Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Newfoundland Standard Time", "Std", "Newfoundland Standard Time"
  .SetStringValue HKLM, strKeyPath & "Newfoundland Standard Time", "MapID", "-1,81"
  .SetDWORDValue HKLM, strKeyPath & "Newfoundland Standard Time", "Index", &H0000003c
  arrTZI = Array(&Hd2,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H00,&H00,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H00,&H00,&H01,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Newfoundland Standard Time", "TZI", arrTZI
  
  ' Newfoundland Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Newfoundland Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Newfoundland Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "Newfoundland Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&Hd2,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H00,&H00,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H00,&H00,&H01,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Newfoundland Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&Hd2,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H00,&H00,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H00,&H00,&H01,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Newfoundland Standard Time\Dynamic DST", "2007", arrTZI
  
  ' Pacific SA Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Pacific SA Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Pacific SA Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Pacific SA Standard Time", "Display", "(GMT-04:00) Santiago"
  .SetStringValue HKLM, strKeyPath & "Pacific SA Standard Time", "Dlt", "Pacific SA Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Pacific SA Standard Time", "Std", "Pacific SA Standard Time"
  .SetStringValue HKLM, strKeyPath & "Pacific SA Standard Time", "MapID", "-1,82"
  .SetDWORDValue HKLM, strKeyPath & "Pacific SA Standard Time", "Index", &H00000038
  arrTZI = Array(&Hf0,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H03,&H00, _
    &H06,&H00,&H02,&H00,&H17,&H00,&H3b,&H00,&H3b,&H00,&He7,&H03,&H00,&H00,&H0a,&H00,&H06,&H00,&H02,_
    &H00,&H17,&H00,&H3b,&H00,&H3b,&H00,&He7,&H03)
  .SetBinaryValue HKLM, strKeyPath & "Pacific SA Standard Time", "TZI", arrTZI
  
  ' Pacific Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Pacific Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Pacific Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Pacific Standard Time", "Display", "(GMT-08:00) Pacific Time (US & Canada)"
  .SetStringValue HKLM, strKeyPath & "Pacific Standard Time", "Dlt", "Pacific Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Pacific Standard Time", "Std", "Pacific Standard Time"
  .SetStringValue HKLM, strKeyPath & "Pacific Standard Time", "MapID", "32,33"
  .SetDWORDValue HKLM, strKeyPath & "Pacific Standard Time", "Index", &H00000004
  arrTZI = Array(&He0,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Pacific Standard Time", "TZI", arrTZI
  
  ' Pacific Standard Time\Dynamic DST
  .CreateKey HKLM, strKeyPath & "Pacific Standard Time\Dynamic DST"
  .SetDWORDValue HKLM, strKeyPath & "Pacific Standard Time\Dynamic DST", "FirstEntry", &H000007d6
  .SetDWORDValue HKLM, strKeyPath & "Pacific Standard Time\Dynamic DST", "LastEntry", &H000007d7
  arrTZI = Array(&He0,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Pacific Standard Time\Dynamic DST", "2006", arrTZI
  arrTZI = Array(&He0,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0b,&H00, _
    &H00,&H00,&H01,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H02,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Pacific Standard Time\Dynamic DST", "2007", arrTZI
  
  ' Pacific Standard Time (Mexico)
  If Not KeyExists(HKLM, strKeyPath & "Pacific Standard Time (Mexico)") Then
    .CreateKey HKLM, strKeyPath & "Pacific Standard Time (Mexico)"
  End If
  .SetStringValue HKLM, strKeyPath & "Pacific Standard Time (Mexico)", "Display", "(GMT-08:00) Tijuana, Baja California"
  .SetStringValue HKLM, strKeyPath & "Pacific Standard Time (Mexico)", "Dlt", "Pacific Daylight Time (Mexico)"
  .SetStringValue HKLM, strKeyPath & "Pacific Standard Time (Mexico)", "Std", "Pacific Standard Time (Mexico)"
  .SetDWORDValue HKLM, strKeyPath & "Pacific Standard Time (Mexico)", "Index", &H80000045
  arrTZI = Array(&He0,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H0a,&H00, _
    &H00,&H00,&H05,&H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H04,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Pacific Standard Time (Mexico)", "TZI", arrTZI
  
  ' SA Pacific Standard Time
  If Not KeyExists(HKLM, strKeyPath & "SA Pacific Standard Time") Then
    .CreateKey HKLM, strKeyPath & "SA Pacific Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "SA Pacific Standard Time", "Display", "(GMT-05:00) Bogota, Lima, Quito, Rio Branco"
  .SetStringValue HKLM, strKeyPath & "SA Pacific Standard Time", "Dlt", "SA Pacific Daylight Time"
  .SetStringValue HKLM, strKeyPath & "SA Pacific Standard Time", "Std", "SA Pacific Standard Time"
  .SetStringValue HKLM, strKeyPath & "SA Pacific Standard Time", "MapID", "-1,83"
  .SetDWORDValue HKLM, strKeyPath & "SA Pacific Standard Time", "Index", &H0000002d
  arrTZI = Array(&H2c,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "SA Pacific Standard Time", "TZI", arrTZI
  
  ' Sri Lanka Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Sri Lanka Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Sri Lanka Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Sri Lanka Standard Time", "Display", "(GMT+05:30) Sri Jayawardenepura"
  .SetStringValue HKLM, strKeyPath & "Sri Lanka Standard Time", "Dlt", "Sri Lanka Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Sri Lanka Standard Time", "Std", "Sri Lanka Standard Time"
  .SetStringValue HKLM, strKeyPath & "Sri Lanka Standard Time", "MapID", "-1,74"
  .SetDWORDValue HKLM, strKeyPath & "Sri Lanka Standard Time", "Index", &H000000c8
  arrTZI = Array(&Hb6,&Hfe,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00, _
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,_
    &H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Sri Lanka Standard Time", "TZI", arrTZI
  
  ' Tasmania Standard Time
  If Not KeyExists(HKLM, strKeyPath & "Tasmania Standard Time") Then
    .CreateKey HKLM, strKeyPath & "Tasmania Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "Tasmania Standard Time", "Display", "(GMT+10:00) Hobart"
  .SetStringValue HKLM, strKeyPath & "Tasmania Standard Time", "Dlt", "Tasmania Daylight Time"
  .SetStringValue HKLM, strKeyPath & "Tasmania Standard Time", "Std", "Tasmania Standard Time"
  .SetStringValue HKLM, strKeyPath & "Tasmania Standard Time", "MapID", "20,-1"
  .SetStringValue HKLM, strKeyPath & "Tasmania Standard Time", "Index", &H00000109
  arrTZI = Array(&Ha8,&Hfd,&Hff,&Hff,&H00,&H00,&H00,&H00,&Hc4,&Hff,&Hff,&Hff,&H00,&H00,&H03,&H00, _
    &H00,&H00,&H05,&H00,&H03,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H0a,&H00,&H00,&H00,&H01,_
    &H00,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00)
  .SetBinaryValue HKLM, strKeyPath & "Tasmania Standard Time", "TZI", arrTZI
  
  ' W. Australia Standard Time
  If Not KeyExists(HKLM, strKeyPath & "W. Australia Standard Time") Then
    .CreateKey HKLM, strKeyPath & "W. Australia Standard Time"
  End If
  .SetStringValue HKLM, strKeyPath & "W. Australia Standard Time", "Display", "(GMT+08:00) Perth"
  .SetStringValue HKLM, strKeyPath & "W. Australia Standard Time", "Dlt", "W. Australia Daylight Time"
  .SetStringValue HKLM, strKeyPath & "W. Australia Standard Time", "Std", "W. Australia Standard Time"
  .SetStringValue HKLM, strKeyPath & "W. Australia Standard Time", "MapID", "16,17"
  .SetStringValue HKLM, strKeyPath & "W. Australia Standard
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top