Configurando fuso horário remotamente em C#
-
09-06-2019 - |
Pergunta
Como você define o fuso horário do Windows na máquina local programaticamente em C#?Usar uma ferramenta interativa não é uma opção porque as unidades remotas não possuem interface de usuário ou usuários.A máquina remota está executando .NET 2.0 e Windows XP Embedded e um aplicativo local que se comunica com um servidor central (via serviço web) para direcionamento automatizado de suas tarefas.Podemos entregar um comando para sincronizar com uma determinada combinação de horário/fuso, mas que código pode ser colocado no aplicativo local para realizar a mudança?O equipamento não tem imagens de locais específicos antes da instalação, portanto, para usar qualquer equipamento em qualquer local, precisamos ser capazes de sincronizar essas informações.
Solução
SetTimeZoneInformações deve fazer o que você precisa.Você precisará usar P/Invocar para chegar lá.
Observe também que você precisará possuir e ativar o privilégio SE_TIME_ZONE_NAME.
Outras dicas
Isso não está funcionando no Windows 7.Eu tentei com o seguinte ambiente Windows 7 VSTS-2008, está abrindo a janela de fuso horário de alteração ao fazê-lo manualmente
Santosh você está definitivamente correto.RunDll32 Shell32.dll, Control_rundll %Systemroot % System32 timedate.cpl ,,/z %1 é descontinuado por anos e não será executado no Windows 2008, R2, Vista, 7, ...ah, sim, percebi que este fórum parece ter um bug completo no reconhecimento da tecla Enter.talvez algum dia o programador resolva esse problema.
Experimente isso...
Primeiro, você precisa encontrar, no registro, o chave que representa a zona desejada ("Horário Padrão Central" é um exemplo).Eles estão localizados aqui:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Versão Atual\Fusos Horários
Então, com isso em mente, crie um arquivo em lote, “SetTimeZone.bat” com a seguinte linha:
RunDLL32 shell32.dll,Control_RunDLL %SystemRoot%\system32 IMEDATE.cpl,,/Z %1
Em C#, chame:
System.Diagnostics.Process.Start("SetTimeZone.bat", "A chave do fuso horário que você deseja definir");
Você correrá o risco de ter dados incorretos se não utilizar o UTC para transmitir datas...Se você alterar o fuso horário no dispositivo...seus encontros estarão ainda mais distantes.
Você pode usar o UTC e calcular a hora em cada fuso horário.
Em vez de apenas definir o fuso horário de alguns sistemas, você deve considerar usar o Windows Time Service.Ele não cuidará apenas do fuso horário.Ele também cuidará das configurações corretas de data e hora.
Dê uma olhada em: Como sincronizar a hora com o serviço Windows Time no Windows XP
Mesmo se você fizer todas essas configurações no Vista ou no Windows 7, dê uma olhada em isso aqui.