Domanda

Come si fa a impostare il fuso orario di Windows sulla macchina locale a livello di programmazione in C#?Utilizzando uno strumento interattivo non è un'opzione, perché le unità remote privo di interfaccia utente o gli utenti.Il computer remoto è in esecuzione .NET 2.0 e Windows XP Embedded e un app locale che comunica con un server centrale (via web service) per sistemi automatici di direzione dei suoi compiti.Siamo in grado di consegnare un comando di sincronizzazione per un certo periodo di tempo/zona combinazione, ma il tipo di codice che può essere messo in app locale per realizzare il cambiamento?L'apparecchiatura non è ripreso per posizioni specifiche prima dell'installazione, in modo da utilizzare qualsiasi attrezzatura in qualsiasi posizione, dobbiamo essere in grado di sincronizzare queste informazioni.

È stato utile?

Soluzione

SetTimeZoneInformation dovrebbe fare quello di cui hai bisogno.Avrete bisogno di usare P/Invoke per arrivarci.

Nota anche che avrai bisogno di possedere e di attivare il SE_TIME_ZONE_NAME privilegio.

Altri suggerimenti

Questo non funziona in Windows 7.Ho provato con il seguente ambiente windows 7 VST-2008 È l'apertura di Cambiamento di fuso Orario Finestra come dobbiamo farlo manualmente

santosh si sono sicuramente corrette.RunDLL32 shell32.dll,Control_RunDLL %SystemRoot%\system32 IMEDATE.cpl,,/Z %1 è sconsigliata per anni e nemmeno eseguito su Windows 2008 R2, Vista, 7, ...oh, sì, ho notato che in questo forum sembra abbia un bug con il riconoscimento il tasto invio.forse un giorno il programmatore risolverà il problema.

Prova questo...

Prima, è necessario trovare, nel registro di sistema, il chiave che rappresenta la zona che si desidera ("Central Standard Time" è un esempio).Quelli che si trovano qui:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\fusi Orari

Quindi, con questo in mente, creare un file batch, "SetTimeZone.bat" con la seguente riga:

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

Da C#, chiamata:

Sistema.Diagnostica.Processo.Start("SetTimeZone.bat", "La chiave del fuso orario che si desidera impostare");

Si corre il rischio di avere dati non corretti se non si utilizza UTC per la trasmissione di date...Se si modifica il tempo di zone sul dispositivo...stai date saranno anche più lontano.

È possibile che si desidera utilizzare UTC e quindi calcolare il tempo in ogni fuso orario.

Invece di impostare l'orario di alcuni sistemi si dovrebbe prendere in considerazione di utilizzare il Servizio Ora di Windows.Non solo di gestire il fuso orario.Si occuperà anche di correggere le impostazioni di data e ora.

Dare un'occhiata a: Come sincronizzare l'ora con il servizio Ora di Windows in Windows XP

Anche se magari andando a fare tutte queste impostazioni all'interno di Windows 7 o Vista guarda questo qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top