2015-07-15 5 views
0

У меня есть несколько компьютеров в сети, которые мне нужны для синхронизации часовых поясов с хостом. Способ, который, как я думал, будет работать, заключается в экспорте регистрационного ключа часового пояса хоста и импорта .Reg на каждом из клиентских компьютеров. Я в состоянии сделать успешно использовать эти команды в командной строке с хост-компьютера для изменения реестра значенияИзменение реестра Информация о часовом поясе не влияет на системные часы

Reg export HKLM\System\CurrentControlSet\Control\TimeZoneInformation\ \\[computer_name]\[SharedFolder]\TimeZone.Reg

затем на удаленном компьютере:

Reg import [SharedFolder]\TimeZone.Reg

Тем не менее, когда я смотрю на системных часах и его свойствах они не изменились с исходных значений, несмотря на то, что ключи реестра идентичны между хостом и удаленным компьютером. Есть ли способ заставить окна читать реестр для информации о системных часах? Или есть другое решение, которое могло бы помочь мне здесь. Я инкапсулирую эти команды в программу C#, поэтому я открыт для альтернативных программных методов.

Спасибо!

EDIT:

Я не знаю, почему это было помечено как duplicate. Этот вопрос направлен на командную строку и/или решение C# для изменения временной зоны удаленно, а не для решения C++ api.

+0

дубликат [Как изменить настройки часового пояса с помощью Windows API] (HTTP: // StackOverflow.ком/вопросы/9588256/как к изменению времени зональной-настройка-Using-Windows-API). Реестр не является API. –

ответ

1

Согласно this KB article (это для XP, но работает в W7), вы должны позволить службу времени Windows (W32Time) сделать это для вас:

w32tm /config /syncfromflags:manual /manualpeerlist:peerlist 

где peerlist является пространственно список имен доменов (DNS) или IP-адресов.

Согласно this articleW32Time использует UDP 123 порт для связи с другими экземплярами службы (может потребоваться, чтобы пробить дыру в брандмауэрах).

Обратите внимание, что изменение ключа реестра HKLM не обязательно отражается в реальном времени для пользовательских настроек (есть большая вероятность, что это произойдет с изменением ключей HKCU); некоторые изменения требуют повторного входа в систему или даже перезагрузки.

0

Для кого что любопытно, я использовал советы ChristiFati, но инкапсулированные его с PsExec:

psexec \\[remote-computer-name] cmd.exe /c w32tm /config /manualpeerlist:time-nw.nist.gov /syncfromflags:manual /update 
psexec \\[remote-computer-name] cmd.exe /c net stop w32time 
psexec \\[remote-computer-name] cmd.exe /c net start w32time 

Время на удаленном компьютере занимает ~ 10 секунд, чтобы приспособиться к изменениям, которые вы сделали, но, как если часовой пояс правильный, он должен отображать правильное время в Интернете.

EDIT

Одна из командной строки, чтобы сделать то же самое:

psexec \\[remote-computer-name] cmd.exe /c (w32tm /config /manualpeerlist:time-nw.nist.gov /syncfromflags:manual /update ^& net stop w32time ^& net start w32time)