¿Cómo configuro el reloj del sistema de Windows a la hora local correcta usando C#?¿Cómo configuro el reloj del sistema de Windows a la hora local correcta usando C#?
Respuesta
Necesitará P/Invocar el SetLocalTime
function de la API de Windows. Declararlo así en C#:
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern bool SetLocalTime(ref SYSTEMTIME lpSystemTime);
[StructLayout(LayoutKind.Sequential)]
internal struct SYSTEMTIME
{
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek; // ignored for the SetLocalTime function
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
}
Para ajustar la hora, sólo tiene que inicializar una instancia de la estructura SYSTEMTIME
con los valores apropiados, y llama a la función. Código de ejemplo:
SYSTEMTIME time = new SYSTEMTIME();
time.wDay = 1;
time.wMonth = 5;
time.wYear = 2011;
time.wHour = 12;
time.wMinute = 15;
if (!SetLocalTime(ref time))
{
// The native function call failed, so throw an exception
throw new Win32Exception(Marshal.GetLastWin32Error());
}
Sin embargo, cabe destacar que el proceso de llamada debe tener los privilegios apropiados con el fin de llamar a esta función. En Windows Vista y posterior, esto significa que tendrá que solicitar la elevación del proceso.
Como alternativa, puede utilizar el SetSystemTime
function, lo que le permite establecer la hora en UTC (Tiempo Universal Coordinado). Se utiliza la misma estructura SYSTEMTIME
, y las dos funciones se llaman de forma idéntica.
.NET no expone una función para eso, pero puede usar el método Win32 API SetSystemTime (en kernel32.dll). Para obtener la hora UTC, debe usar un NTP Protocol Client y luego ajustar esa hora a la hora local de acuerdo con sus configuraciones regionales.
public struct SYSTEMTIME
{
public ushort wYear,wMonth,wDayOfWeek,wDay,wHour,wMinute,wSecond,wMilliseconds;
}
[DllImport("kernel32.dll")]
public extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);
SYSTEMTIME systime = new SYSTEMTIME();
systime = ... // Set the UTC time here
SetSystemTime(ref systime);
Incorrecto. Esto es para Compact Framework, bajo Windows Mobile. La pregunta está etiquetada como "windows-xp". –
Ups, tienes razón. Corrigiéndolo ahora. –
Aquí hay un par de artículos sobre cómo hacerlo, junto con consultar un reloj atómico para la hora correcta.
Para evitar el problema del privilegio SE_SYSTEMTIME_NAME, intente crear una tarea programada para ejecutar su aplicación y habilite "Ejecutar con los privilegios más altos".
- 1. ¿Cómo obtener la hora actual (en milisegundos) desde el reloj del sistema en Windows?
- 2. ¿Cómo obtengo la hora del sistema local en PHP?
- 3. ¿Cómo copiar el archivo del sistema local a otro sistema en C# (aplicación de Windows)?
- 4. Perdiendo tiempo sin cambiar el reloj del sistema de Windows
- 5. ¿Cómo puedo acceder a la hora del sistema usando NASM?
- 6. Convierte un QDateTime en UTC a hora local del sistema
- 7. cómo convertir la hora del servidor a hora local
- 8. C# Como reemplazar reloj de la bandeja del sistema
- 9. C# UTC a los usuarios Hora local
- 10. ¿Cómo mostrar la hora actualizada como hora del sistema en una etiqueta usando C#?
- 11. El reloj del emulador no coincide con el reloj del sistema host
- 12. ¿Cómo obtener la hora del sistema en Haskell usando Data.Time.Clock?
- 13. ¿Qué especificamente son la hora del reloj de pared, la hora de la CPU del usuario y la hora de la CPU del sistema en UNIX?
- 14. Convertir hora UTC a fecha hora local
- 15. ¿La API timeBeginPeriod afecta el reloj del sistema?
- 16. Convertir hora UTC/GMT a hora local
- 17. Obtener la hora actual del sistema?
- 18. convertir la hora local, de alguien a la hora UTC
- 19. Calcula "Mediodía solar" usando efem, traduciendo a la hora local
- 20. ¿Cómo se comporta el caché del navegador si el reloj local no es coherente con el reloj del servidor?
- 21. Instalación de OSQA en Windows (sistema local)
- 22. Rubí DateTime.Parse a la hora local
- 23. Mostrar hora local a la vista
- 24. ¿Cómo puedo obtener la hora local del usuario en lugar de la hora del servidor?
- 25. C#: decrementando un reloj usando el módulo matemático
- 26. C# - Detecta la hora de la última interacción del usuario con el sistema operativo
- 27. PHP UTC a la hora local
- 28. Cómo convertir entre hora local y universal usando boost :: date_time?
- 29. Cómo obtener la hora local del usuario en Page_Load
- 30. ¿cómo configuro una hora de NSDate existente?
¿cómo se obtiene la "hora local correcta"? –
¿Qué quiere decir con "hora local correcta"? Por favor explique. –