Pessoal, eu tenho isso rodando com o windows embutido no w32tm e uma tarefa agendada (veja abaixo).
O primeiro passo foi configurar o w32tm para usar muitos servidores de tempo diferentes (e também para registrar, para que pudéssemos ver o que estava acontecendo). O segundo passo foi agendar o w32tm no agendador de tarefas. Gostei desta solução, pois não exigia nenhuma ferramenta de terceira parte. É muito importante configurar os diferentes servidores de tempo, pois muitas vezes eles não respondem.
Configurar o w32tm
Abra o prompt de comando (execute o seguinte como administrador)
w32tm /config /manualpeerlist:"time.nist.gov time.windows.com time-nw.nist.gov time-a.nist.gov time-b.nist.gov time-a.timefreq.bldrdoc.gov time-b.timefreq.bldrdoc.gov time-c.timefreq.bldrdoc.gov utcnist.colorado.edu" /syncfromflags:manual /update
w32tm /query /configuration
Verifique se a lista do servidor NTP está atualizada corretamente, isto é, reflete a lista de pares que você acabou de inserir
w32tm /debug /enable /file:C:\windows\temp\w32time.log /size:10000000 /entries:300
Navegue até o diretório e verifique se o registro foi criado
Altere a hora do sistema manualmente (para que a hora esteja fora de sincronia), volte ao prompt de comando e execute o comando resync
w32tm /resync
Verifique se a hora do sistema foi atualizada. ** Se você receber um erro sobre o serviço de horário não ser iniciado, você pode usar o comando net start w32time
e tentar outra ressincronização
Se você receber o seguinte erro: The compter did not resync because the required time change was too big.
, em seguida, use este comando para ressincronizar: w32tm /resync /force
Se isso funcionar com sucesso, tudo o que você precisa fazer é configurar a seguinte tarefa agendada para executar quantas vezes quiser (ela usará sua lista de pares configurada acima).
Agende o w32tm
Argumento do programa / script
%windir%\system32\sc.exe start w32time task_started
%windir%\system32\w32tm.exe /resync