Diego Cabai KEEP I.T. SIMPLE, KEEP I.T. CLEAN

9Mar/1020

Cambio de Hora (DST) Chile Marzo – Abril 2010

DST Geek Clock

Como todos saben, debido al desastre natural que fuimos testigos, Chile decidió no cambiar la hora este 13 de Marzo del 2010 y si hacerlo el 3 de Abril del 2010. Para algunos una decisión acertada debido a otras prioridades, para nosotros los administradores de sistemas, es un gran problema ya que lleva un gran trabajo por detrás para que los sistemas se sincronicen con la hora real.

Por supuesto que hay que hacer cambios a nivel de plataforma en todos los sistemas operativos y aplicaciones relacionadas directamente con la zona horaria como la mensajería sobre Microsoft Exchange y Microsoft Outlook. Los calendarios estan directamente conectados a las zonas horarias así que es necesario realizar alguna actividad sobre ellos.

La postura oficial de Microsoft sobre este tema es simple, todavía no tenemos un hotfix así que les contamos como cambiar la zona por una cualquiera y luego volver a la anterior…jajajaja me parece un chiste que hagan eso cuando hacer el hotfix les puede demorar unos 15 min, pero bueno esa es la postura oficial y no es la que voy a optar yo. Prefiero arreglar la zona Santiago que cambiarla por Cayenne, Fortaleza ?!?!?!?

Yo propongo modificar la zona Santiago con lo valores correspondientes al nuevo cambio de hora así que acá les dejo el código necesario y los pasos que pueden tomar para hacer el cambio. No es un artículo oficial, es la postura que tomo yo y que va a traerme menos dolores de cabeza.

Vamos a necesitar crear un archivo de registro, ejemplo Zone.reg y un archivo de VBScript, ejempo refreshTZinfo.vbs.

Zone.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Pacific SA Standard Time]
"Display"="(GMT-04:00) Santiago"
"Dlt"="Pacific SA Daylight Time"
"Std"="Pacific SA Standard Time"
"MapID"="-1,82"
"Index"=dword:00000038
"TZI"=hex:f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,06,00,01,00,17,00,3b,\
  00,3b,00,00,00,00,00,0a,00,06,00,02,00,17,00,3b,00,3b,00,00,00

refreshTZinfo.vbs:

Set objSh = CreateObject("WScript.Shell")

'Get the StandardName key of the current time zone
szStandardName = objSh.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\StandardName")

'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

Dim process, processid, result, strUpdateCommand
Set process = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2:Win32_process")

'Add time change privilege to the process object
process.Security_.Privileges.AddAsString "SeSystemTimePrivilege",True
strUpdateCommand = "control.exe timedate.cpl,,/Z" & szTzKey

'Launch control.exe to refresh time zone information using the TZ key name obtained above
result = process.create(strUpdateCommand,Null,Null,processid)
If result <> 0 Then
    objSh.LogEvent 1, "DST 2007 Registry Update and Refresh failed to execute on this computer.  Unable to refresh the Timezone database."
    Wscript.Quit 0
End If

'Get current display name of refreshed time zone
szCurrDispName = objSh.RegRead("HKLM\" & szTzsKeyPath & "\" & szTzKey & "\Display")

'Write entry to the Application event log stating that the update has executed
objSh.LogEvent 4, "DST 2007 Registry Update and Refresh has been executed on this computer." & chr(13) & chr(10) & chr(13) & chr(10) & "Current time zone is: " & szCurrDispName & "."

Para poder modificar la zona, solo debemos ejecutar el archivo Zone.reg y luego el vbs para que la refresque. Esto lo podríamos automatizar si es que tenemos muchos equipos en nuestro ambiente y no queremos pasar uno por uno. Para automatizarlo debemos primero conseguir el ejecutable psexec.exe de las herramientas de Sysinternals. Luego necesitamos una lista de todos los servidores o equipos en un archivo de texto, por ejemplo Servers.txt. Por último hacemos un archivo batch, ejemplo cambiar.bat.

cambiar.bat:

psexec -u dominio\usuario -p password @servers.txt regedit /s \\servidor\share\zone.reg
psexec -u dominio\usuario -p password @servers.txt cscript \\servidor\share\refreshTZInfo.vbs
pause

Como ven, se necesita que los equipos esten en el mismo dominio de autenticación para que funcione y además dicha autenticación se debe introducir dentro del batch. Todos los archivos, tanto el reg, el vbs, etc deben estar en un share que todos los equipos vean y el mismo definirlo en este último batch. Este share podría ser dentro de una carpeta del NETLOGON del dominio ya que todos los equipos lo ven ahí.

Con este procedimiento podes cambiar la zona de todos los equipos basados en Microsoft Windows. Algunos con Windows Vista o Windows 7 puede que fallen debido al vbs, no al reg. Para estos casos pueden probar con los siguientes comandos:

Windows Vista:

CONTROL.EXE TIMEDATE.CPL,,/Z Pacific SA Standard Time

Windows 7 y Windows 2008:

tzutil /s "Pacific SA Standard Time"

Ahora bien, esto es para las estaciones de trabajo y servidores. Qué pasa con los Exchange, Outlook y Blackberry?

Blackberry no dio ningun status oficial así que si pasa como en otros cambios de hora seguro no hay que hacer nada, esperemos, pero habría que estar atentos.

Para el Exchange habría que ejecutar la Exchange Calendar Update Tool que se puede descargar del KB941018. En el artículo podrán encontrar mas información sobre qué archivos toca, qué permisos necesita, etc pero habría que ejecutarlo para actualizar las agendas de los usuarios.

Para actualizar las agendas que estan en PST (Outlook) deberán ejecutar el Time Zone Data Update Tool que se puede descargar el KB931667. El mismo sirve para que los usuarios actualicen las agendas en sus respectivos PSTs. Nuevamente en el link explica todos los detalles relevantes pero habría que notificar al soporte de esta actualización manual.

**** EDIT START *****

Para Windows 7 y Windows Server 2008 habría que usar otro contenido del archivo de regsitro de Windows. Este es el que funcionó sin problemas.

Zone-Win7-Win2K8.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Pacific SA Standard Time]
"TZI"=hex:f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,06,00,01,00,17,00,3b,\
  00,3b,00,00,00,00,00,0a,00,06,00,02,00,17,00,3b,00,3b,00,00,00
"MUI_Display"="@tzres.dll,-90"
"MUI_Dlt"="@tzres.dll,-91"
"MUI_Std"="@tzres.dll,-92"
"Display"="(UTC-04:00) Santiago"
"Dlt"="Pacific SA Daylight Time"
"Std"="Pacific SA Standard Time"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Pacific SA Standard Time\Dynamic DST]
"FirstEntry"=dword:000007d9
"LastEntry"=dword:000007da
"2009"=hex:f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,03,00,06,00,02,00,17,00,\
  3b,00,3b,00,e7,03,00,00,0a,00,06,00,02,00,17,00,3b,00,3b,00,e7,03
"2010"=hex:f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,06,00,01,00,17,00,\
  3b,00,3b,00,00,00,00,00,0a,00,06,00,02,00,17,00,3b,00,3b,00,00,00

**** EDIT END *****

Espero que les sea de utilidad y mas abajo les dejo los links necesarios para esta actividad:

Link | PsExec
Link | Microsoft Daylight Saving Time & Time Zone Blog
Link | How to configure daylight saving time for Microsoft Windows operating systems
Link | Exchange Calendar Update Tool
Link | Time Zone Data Update Tool for Microsoft Office Outlook
Link | February 2010 cumulative time zone update for Windows
Link | Latam Team Blog

Artículos relacionados:

oSkope un Buscador Fuera de lo Común
gOS: El sistema operativo de las PC's de u$s 199
Nuevo Hardware para Apagar nuestro equipo
WSUS 3.0 Extension Pack
250Gb Xbox 360 Modern Warfare 2 &ndash; Nuevo Modelo

Te gustó el Artículo? Compártelo!

Comments (20) Trackbacks (0)
  1. Diego

    no encuentro el decreto oficial sobre la suspension de cambio de hora, tenes referencias ?

    abrazo,
    jorge

  2. mmmm … si, veo a que te referis … yo buscaba un decreto o “un algo” mas formal.

    Despues nos preguntamos porque no hubo alerta de … perdon, se me escapo !!!

  3. otra muestra más de la ignorancia de las actuales autoridades. No tienen idea del riesgo que meten al procesamiento de sistemas.

  4. Diego excelente artículo… tengo algunas consultas a ver si me puedes ayudar.

    - El código funciona muy bien en xp y vista, probé con los comandos recomendados para 7 y 2008 pero no funciona, alguna pista??

    - Una vez hechas las pruebas en xp (las cuales funcionaron correctamente), me queda la siguiente duda; aplicado el cambio para que la hora sea cambiada el 03 de abril del 2010, como seguirá el 2011?, debiera correr otro script después del 03 de Abril del mismo modo pero que lo vuelva a su estado normal?.

    Gracias de ante mano y estoy más complicado con la primera pregunta.

  5. Diego,

    solo te falto indicar como volvemos a la normalidad despues del 03/04/2010.. o el proximo año el cambio volvera a efectuarse en Abril.

    Saludos

    PD: En todo caso muchas gracias!!

  6. @Pedro, para lo que es Windows 7 y Windows 2008 armé otro reg que me funcionó perfecto. En unos minutos lo subo luego de otro control de calidad Ja!

    Mirá…para 2011 habría que volver a hacer la modificación. El cambio de Octubre se mantiene como el ultimo año pero para Marzo/Abril habría que ejecutar un reg que haga el cambio nuevamente. De eso no te salvas ni con el comunicado oficial del Cayene Fortaleza de Microsoft porque la herramienta de Exchange y Outlook tambien la tendrías que correr.

    @Juan, al igual que lo que comenté recien para volver al anterior habría que ejecutar un reg que haga el cambio. Qué podrían hacer? Exportar sus entradas de registro actuales. Guardarlas. Aplicar estas que pongo yo. Esperar a después del 4 de Abril y ahí pueden programar aplicar las que se guardaron antes. De esa manera vuelven a lo anterior.

    Saludos!

  7. Gracias diego por tu ayuda y respuesta… ojalá puedas subir pronto el script para 7 y 2008. Se agradece!

  8. @Pedro, ahí puse el código que funcionó en mis pruebas. Pruébalo y comenta como te fue.

    Saludos!

  9. Estimado,

    Se agradece por el procedimiento.
    Sin embargo despues de ejecutar los pasos indicados (Windows XP, 2003), verifico el cambio con el utilitario TZedit y me sigue mostrando el cambio para el segundo sabado de marzo. Estare haciendo algo mal ????

    Muchas gracias.

  10. Después te tanto movimiento y cambio de registro, Microsoft por fin sacó el parche…

    http://support.microsoft.com/kb/981128

    Si tan solo lo hubiese sacado mas rápido y su postura hubiese sido esperen el parche en vez de decirnos que pasemos la zona a Cayenne Fortaleza hubiese sido todo mas práctico no?

    A quién no le andaba el script, ahora puede ejecutar el parche directamente.

    Saludos!

  11. Diego.. hay que tener ojo que ya estan discutiendo la posibilidad de aplazar el cambio de hora nuevamente.. saludos :-)

  12. Hola Diego, te cuento, dias antes del supuesto cambio de hora microsoft ya habia liberado los hotfix para cada uno de sus sistemas operativos y la noticia fue publicada por Fayerwayer, te dejo el link, quizas aun sea util para alguno de mis compatriotas

    http://www.fayerwayer.com/2010/03/chile-%C2%BFcomo-ajustar-nuestros-computadores-para-la-extension-del-horario-de-verano/

  13. @Leonardo, gracias por el comentario, te cuento que Fayerwayer linkea a Linacre el cual publicó el artículo el 11 de Marzo y Fayerwayer el 12 de Marzo mientras que el mio fue el 9 de Marzo junto al PDF que mandó Microsoft diciendo que cambien la zona porque no existía hotfix. Luego en mis comentarios puse el link al hotfix cuando estuvo disponible. Gracias!

    Saludos!

  14. Hola, esta solución me hizo el cambio de hora de inmediato, la duda es como regreso a la hora normal el 03-04-2011 y otra cosa, el parche de microsoft no esta para XP…. agradecería me respondan.

  15. Hola Diego, no se si te has enterado, pero ahora el cambio de hora en Chile se corrió nuevamente para el 7 de mayo, y dicho horario ya no durara hasta octubre, si no que ahora volverá a cambiar el 20 de agosto (nuevamente a horario verano).

    Si pudieras actualizar tu script seria de gran ayuda =)

    Saludos!

  16. veo que mis amigos chilenos siguen improvisando sobre la marcha, total es “gratis”, o no ?

    http://diario.elmercurio.com/2011/03/28/nacional/nacional/noticias/713D435C-A22A-44CE-A041-E49341A93F65.htm?id={713D435C-A22A-44CE-A041-E49341A93F65}

  17. Esta como de moda acá parece correr el cambio de hora..

  18. este tema del cambio de hora sale un monton de plata a las empresas de TI.
    Otro efecto negativo es que si sale por los diarios es “palabra santa”, nadie se cuestiona ni el medio ni el timming, por lo cual el peor efecto es el ambiente de informalidad que genera.
    Lamentable porque afecta la creacion y mantenimiento de un ambiente de trabajo estable y predecible.

  19. I get a problem subscribing to your RSS Feed… It states feed is active, nonetheless I never get updates in my feed reader… Any Ideas?


Leave a comment

(required)


*

No trackbacks yet.