Pregunta

¿Cómo se establece la zona horaria de Windows en el equipo local mediante programación en C#?El uso de una herramienta interactiva no es una opción debido a que las unidades remotas no tienen interfaz de usuario o los usuarios.El equipo remoto se está ejecutando .NET 2.0 y Windows XP Embedded y un local de la aplicación que se comunica con un servidor central (a través del servicio web) para la automatización de la dirección de sus tareas.Nos puede enviar un comando para sincronizar a una determinada hora/zona combinación, pero, ¿qué código se puede poner en el local de la aplicación para realizar el cambio?El equipo no es fotografiada para ubicaciones específicas antes de la instalación, de modo que para el uso de cualquier equipo en cualquier lugar, tenemos que ser capaces de sincronizar esta información.

¿Fue útil?

Solución

SetTimeZoneInformation debe hacer lo que usted necesita.Usted necesitará utilizar P/Invoke para llegar al mismo.

Tenga en cuenta también que usted necesita para poseer y habilitar la SE_TIME_ZONE_NAME privilegio.

Otros consejos

Esto no funciona en Windows 7.He probado con el siguiente entorno windows 7 VSTS-2008 Es la apertura de Cambiar la Zona horaria en la Ventana como lo hacemos manualmente

santosh usted es definitivamente correcto.RunDLL32 shell32.dll,Control_RunDLL %SystemRoot%\system32 IMEDATE.cpl,,/Z %1 está en desuso durante años y no se ejecutan en Windows 2008, R2, Vista, 7, ...oh, sí, me di cuenta de que este foro parece un completo error con el reconocimiento de la tecla enter.tal vez algún día el programador va a solucionar ese problema.

Intenta esto...

En primer lugar, usted necesita para encontrar, en el registro, la clave que representa la zona que desee ("Hora Estándar Central" es un ejemplo).Aquellos que se encuentran aquí:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\Zonas horarias

Así que, con eso en mente, crear un archivo de proceso por lotes, "SetTimeZone.bat" con la siguiente línea:

RunDLL32 shell32.dll,Control_RunDLL %SystemRoot%\system32 IMEDATE.cpl,,/Z %1

Desde C#, llame al:

Sistema.Los diagnósticos.Proceso.Inicio("SetTimeZone.murciélago", "La clave de la zona horaria que desea establecer");

Se corre el riesgo de tener datos incorrectos si no utiliza la UTC para transmitir las fechas...Si cambio de zonas horarias en el dispositivo...estás fechas serán aún más lejos.

Puede que desee utilizar UTC y, a continuación, calcular el tiempo en cada zona horaria.

En lugar de sólo la configuración de la zona horaria de algunos sistemas se debería considerar la posibilidad de utilizar el Servicio de Hora de Windows.No sólo va a manejar el tiempo de la zona.También cuidar de la correcta configuración de la fecha y el tiempo mismo.

Echa un vistazo a: Cómo sincronizar la hora con el servicio de Hora de Windows en Windows XP

Incluso si tal vez va a hacer todos estos ajustes en Vista o Windows 7 echa un vistazo a esta aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top