Windows XP注册表中有一个特定的文件夹,我想在两台计算机之间以Dropbox风格进行同步。我想要的方式是,每当我在一台计算机上进行注册表更改时,它都会出现在另一台计算机上。
可能?怎么样?
(如果您对我为什么要这样做感到好奇:我想在所有计算机上使用相同的PuTTY会话。)
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY。
Windows XP注册表中有一个特定的文件夹,我想在两台计算机之间以Dropbox风格进行同步。我想要的方式是,每当我在一台计算机上进行注册表更改时,它都会出现在另一台计算机上。
可能?怎么样?
(如果您对我为什么要这样做感到好奇:我想在所有计算机上使用相同的PuTTY会话。)
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY。
Answers:
很抱歉花了这么长时间,我认为这是我写答案所花的最长时间!
多年以前,我想要非常相似的功能,但是,我找不到一种实现方法……现在,我知道更多的编程知识,我认为值得尝试一下。
所以,几个小时后,我给你RegSync v1。

只需复制完整的注册表路径(就您而言HKEY_CURRENT_USER\Software\SimonTatham\PuTTY),然后将其粘贴到框中。
单击开始,它将自动监视该注册表项是否有任何添加,删除或更改。
如果检测到任何更改,它将*导出一个regsync.reg与应用程序运行在同一文件夹中的注册表文件。
* 如果一次进行多个更改,则第一次更改后将等待5秒钟。
当/之后按下开始按钮时,它将监视所在文件夹中文件的任何更改regsync.reg,如果检测到更改,它将删除您在本地选择的注册表项中的所有条目并导入注册表文件。(请注意,它不会检查.Reg文件是否与它正在监视的位置匹配,因此,如果您在每台PC上键入不同的位置,则可能会出错)。
因此...您可以从保管箱或Windows共享或任何其他文件夹共享服务运行此文件。在两台计算机上运行它,然后选择要监视的注册表项。
额外说明...
这需要.NET Framework版本4。
它不监视子项,尽管您可以在其他文件夹中运行该工具的其他副本(我已经有改善此想法的想法,但是仅当人们需要该工具时)。
尽管它不需要UAC提升,但是每次尝试从注册表导入或导出时,它都会使您感到烦恼(它基本上调用regedit.exe/ reg.exe),因此,我建议您运行提升的程序...这样做多次它将变得非常烦人。
不能保证-它获得了“可以在我的PC上工作”的标志,并且我已经在几台计算机上对其进行了测试,但是,这还没有代码审查和测试时间。
即使您最终不使用它,也希望它对那里的人有用!
使用包含所需确切条目的注册表文件,以静默方式运行regedit.exe可能会更容易。您可以将每台计算机设置为从共享位置运行它,因此您所需要做的就是更新文件,并在每台计算机上运行regedit.exe的下一个计划运行时,它们会获得新的条目。
就像是:
regedit.exe /S puttyentries.reg
为了从一台计算机中提取注册表项,您可以使用:
regedit.exe /E puttyentries.reg "registry_key"
可能会有更优雅的方法使用vbscript自动化或使用注册表的远程读/写功能自动执行整个过程。
这是AutoIt的示例,它将每30分钟与一台远程计算机同步一次(caveat,我确实没有对此进行过测试):
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
regedit也可以以静默方式从注册表中提取内容吗?