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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top