Синхронизация реестра Windows между несколькими компьютерами

9

В моем реестре Windows XP есть определенная папка, которую я хочу синхронизировать между двумя компьютерами в стиле Dropbox. Я хочу, чтобы каждый раз, когда я вносил изменения в реестр на одном компьютере, он появлялся на другом (их) компьютере.

Возможный? Как?

(Если вам интересно, почему я хочу это сделать: я хочу, чтобы на всех компьютерах проводились одинаковые сессии PuTTY.)

Рам Рахум
источник
У меня есть небольшая идея для чего-то ... Можете ли вы сказать мне точный путь ключей реестра замазки вы хотите? Я ухожу сейчас, но вернусь через час и постараюсь помочь дальше.
Уильям Хилсум
@ Уильям Хилсум: Это HKEY_CURRENT_USER\Software\SimonTatham\PuTTY.
Рам Рахум
1
Эти компьютеры обычно находятся в одной сети? Или вы хотите, чтобы это работало и удаленно?
music2myear
@ Ram Rachum Это то же самое на обоих компьютерах?
Уильям Хилсум
2
Если речь идет о замазке, почему бы не использовать переносную замазку ? Сохраняет настройки в файл. Синхронизируйте ваши копии Portable Putty через Dropbox или что-то еще.
Zoredache

Ответы:

6

Извините, что так долго, я думаю, что это самое длинное, что я взял, чтобы написать ответ!

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

Итак, несколько часов спустя, я даю вам RegSync v1.

введите описание изображения здесь

Просто возьмите копию полного пути реестра (в вашем случае HKEY_CURRENT_USER\Software\SimonTatham\PuTTY) и вставьте его в коробку.

Нажмите «Пуск», и он автоматически проверит этот раздел реестра на наличие добавлений, удалений или изменений.

Если он обнаружит какие-либо изменения, он *экспортирует файл реестра, который называется regsync.regв той же папке, в которой работает приложение.

* В случае более чем одного изменения за раз, он будет ждать 5 секунд после первого изменения.

Когда / после нажатия кнопки запуска, он будет отслеживать папку, в которой он находится, на наличие изменений в regsync.regфайле, и если он обнаружит изменение, он удалит ВСЕ записи в выбранном вами разделе реестра и импортирует файл реестра. (Пожалуйста, будьте осторожны, он не проверит, соответствует ли .Regфайл местоположению, которое он отслеживает, поэтому, если вы введете разные местоположения на каждом компьютере, он может испортиться).

Итак ... вы можете запустить это из общих папок Dropbox или Windows, или из любой другой службы общего доступа к папкам. Запустите его на обоих компьютерах и выберите раздел реестра для мониторинга.

Дополнительные заметки ...

  • Для этого требуется .NET Framework версии 4.

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

  • Хотя это не требует повышения прав UAC, оно будет выдавать вам ошибки при каждом повышении уровня импорта или экспорта из реестра (в основном это вызывает regedit.exe/ reg.exe), поэтому я рекомендую запустить программу с повышенными правами ... Она делает это несколько раз и это станет очень раздражающим.

  • Никаких гарантий - он получает значок «Работает на моем ПК», и я проверил его на нескольких машинах, но у него не было обзора кода и часов тестирования… Начните работу через несколько часов.

Даже если вы не используете его, я надеюсь, что это кому-то пригодится!

Ссылка на скачивание

Уильям Хилсум
источник
Ницца! Вы держите это с закрытым исходным кодом?
Рам Рахум
@Ram Rachum - я не особо "делаю" open source (целые проекты) ... Если у кого-то есть какие-либо вопросы / желание что-то увидеть, я буду более чем рад предоставить пример кода из него ... или поделиться код с друзьями через Dropbox .... Если у вас есть какие-либо предложения или хотите какие-либо улучшения, дайте мне знать. ... Я все еще новичок в программировании и пытаюсь разобраться с системами VCS ... Когда я их понимаю, я могу загрузить / начать делиться!
Уильям Хилсум
1
@William; Открытый источник не должен быть модным, просто заархивируйте исходный код и загрузите его вместе с открытым исходным кодом!
Фоши
@Phoshi -: / Хороший вопрос ... Может быть, скоро!
Уильям Хилсум
RegSync v1 будет в кодекплексе в будущем, как с открытым исходным кодом? моей компании нужен исходный код аудита перед установкой любого приложения или программы в среде.
Kiquenet
5

может быть проще запустить regedit.exe в автоматическом режиме с файлом реестра, который содержит точные записи, которые вы хотите. Вы можете настроить каждый компьютер для запуска его из общего расположения, поэтому все, что вам нужно сделать, это обновить файл, и при следующем запуске regedit.exe на каждом компьютере они получат новые записи.

что-то вроде:

regedit.exe /S puttyentries.reg

Чтобы извлечь ключ реестра с одного компьютера, вы должны использовать:

regedit.exe /E puttyentries.reg "registry_key"

Вероятно, были бы более элегантные способы автоматизации всего процесса с использованием vbscript или autoit с удаленными функциями чтения / записи для реестра.

Вот пример с AutoIt, который будет синхронизироваться каждые 30 минут с удаленным компьютером (предостережение, я действительно не проверял это):

While 1 ;loop indefinitely
    $i1 = 1 ;set initial counter
    While 1 ;loops through all sessions
        $keyname = RegEnumVal("\\REMOTECOMPUTER\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions", $i1) ;reads session names
        If @error <> 0 Then ExitLoop ;exits when no more sessions exist
        $i2 = 1 ;set initial counter
        While 1 ;loops through all value in key until done
            $valuename = RegEnumVal("\\REMOTECOMPUTER\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions" & "\" & $keyname, $i2) ;read value name from remote machine
            If @error <> 0 Then ExitLoop ;errors and escapes when no more values to read
            $type = @extended ;sets registry value type
            $value = RegRead("HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Session" & "\" & $keyname, $valuename) ;read value
            RegWrite("HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Session" & "\" & $keyname, $valuename, $type, $value) ;write key value to local machine
            $i2 = $i2 + 1 ;increment by 1
        WEnd
        $i1 = $i1 + 1 ;increment by 1
    WEnd
    Sleep(1800000) ;sleep 30 min
WEnd
MaQleod
источник
Я не хотел бы редактировать файл вручную. Можно regeditтакже извлечь из реестра в автоматическом режиме?
Рам Рахум
отредактировано, чтобы добавить опцию чтения, я посмотрю, что я могу написать для более элегантного скриптового варианта
MaQleod
1
Это может быть достаточно для парня, который спросил, но это не будет синхронизировать удаление настроек. Таким образом, если вы удалите установку замазки на одном узле экспорта, повторно импортируйте на узел вашего узла, удаление не произойдет. Когда вы экспортируете и повторно импортируете обратно на хост, на котором вы удалили элемент конфигурации, ваш удаленный элемент будет восстановлен.
Zoredache
Хорошо, добавлен пример autoit, который будет выполнять весь процесс сам по себе (или, по крайней мере, так должно быть, я не проверял его, поэтому, пожалуйста, сначала сделайте резервную копию всего).
MaQleod