有办法做到这一点吗?
或者我必须手动从注册处获取每条记录?
cmd.exe
仅会话(在桌面上生成文件putty-sessions.reg):
putty-sessions.reg
regedit /e "%USERPROFILE%\Desktop\putty-sessions.reg" HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
除了ssh键之外的所有设置(在桌面上生成文件putty.reg):
putty.reg
regedit /e "%USERPROFILE%\Desktop\putty.reg" HKEY_CURRENT_USER\Software\SimonTatham
reg export HKCU\Software\SimonTatham\PuTTY\Sessions ([Environment]::GetFolderPath("Desktop") + "\putty-sessions.reg")
reg export HKCU\Software\SimonTatham ([Environment]::GetFolderPath("Desktop") + "\putty.reg")
双击*.reg文件并接受导入。
*.reg
regedit /i putty-sessions.regregedit /i putty.reg
reg import putty-sessions.regreg import putty.reg
说明:不会取代SimonTatham您的用户名。
SimonTatham
说明:这些命令将没有导出相关的SSH键。
如果您想在PuTTY Portable上导入设置,您可以使用putty.reg文件。
PuTTY Portable
只需将其放入此路径[path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg。程序将导入它
[path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg
改进了将数据导入PuTTY portable的bumerang解决方案。
PuTTY portable
简单地将导出的putty.reg(使用m0nhawk解决方案)移动到PuTTYPortable\Data\settings\不起作用。PuTTY Portable备份文件并创建一个新的空文件。
PuTTYPortable\Data\settings\
要解决此问题,请合并putty.reg手动复制要从导出的putty.reg迁移到以下行下方新创建的PuTTYPortable\Data\settings\putty.reg的配置。
PuTTYPortable\Data\settings\putty.reg
REGEDIT4 [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]"RandSeedFile"="D:\\Programme\\PuTTYPortable\\Data\\settings\\PUTTY.RND"
当我尝试其他解决方案时,我得到了这个错误:
Registry editing has been disabled by your administrator.
对此,我说!
我把下面的Powershell脚本放在一起,用于导出和导入PuTTY设置。导出的文件是一个windows. reg文件,如果您有权限,将完全导入,否则使用import.ps1加载它。
警告:像这样搞乱注册表是一个坏主意™,我真的不知道我在做什么。使用下面的脚本,风险自负,并准备好让你的IT部门重新映像你的机器,问你关于你在做什么的不舒服的问题。
在源机器上:
.\export.ps1
在目标机器上:
.\import.ps1 > cmd.ps1# Examine cmd.ps1 to ensure it doesn't do anything nasty.\cmd.ps1
export.ps1
# All settings$registry_path = "HKCU:\Software\SimonTatham"# Only sessions#$registry_path = "HKCU:\Software\SimonTatham\PuTTY\Sessions"$output_file = "putty.reg" $registry = ls "$registry_path" -Recurse "Windows Registry Editor Version 5.00" | Out-File putty.reg"" | Out-File putty.reg -Append foreach ($reg in $registry) {"[$reg]" | Out-File putty.reg -Appendforeach ($prop in $reg.property) {$propval = $reg.GetValue($prop)if ("".GetType().Equals($propval.GetType())) {'"' + "$prop" + '"' + "=" + '"' + "$propval" + '"' | Out-File putty.reg -Append} elseif ($propval -is [int]) {$hex = "{0:x8}" -f $propval'"' + "$prop" + '"' + "=dword:" + $hex | Out-File putty.reg -Append}}"" | Out-File putty.reg -Append}
import.ps1
$input_file = "putty.reg" $content = Get-Content "$input_file" "Push-Location""cd HKCU:\" foreach ($line in $content) {If ($line.StartsWith("Windows Registry Editor")) {# Ignore the header} ElseIf ($line.startswith("[")) {$section = $line.Trim().Trim('[', ']')'New-Item -Path "' + $section + '" -Force' | %{ $_ -replace 'HKEY_CURRENT_USER\\', '' }} ElseIf ($line.startswith('"')) {$linesplit = $line.split('=', 2)$key = $linesplit[0].Trim('"')if ($linesplit[1].StartsWith('"')) {$value = $linesplit[1].Trim().Trim('"')} ElseIf ($linesplit[1].StartsWith('dword:')) {$value = [Int32]('0x' + $linesplit[1].Trim().Split(':', 2)[1])'New-ItemProperty "' + $section + '" "' + $key + '" -PropertyType dword -Force' | %{ $_ -replace 'HKEY_CURRENT_USER\\', '' }} Else {Write-Host "Error: unknown property type: $linesplit[1]"exit}'Set-ItemProperty -Path "' + $section + '" -Name "' + $key + '" -Value "' + $value + '"' | %{ $_ -replace 'HKEY_CURRENT_USER\\', '' }}} "Pop-Location"
很抱歉代码不够地道,我对Powershell不是很熟悉。欢迎改进!
@m0nhawk发布的答案似乎不起作用,因为我在Windows 7机器上测试。相反,使用以下脚本将导出/导入油灰的设置:
::export@echo offset regfile=putty.regpushd %~dp0 reg export HKCU\Software\SimonTatham %regfile% /y popd
--
::import@echo offpushd %~dp0set regfile=putty.reg if exist %regfile% reg import %regfile% popd
启动运行,然后在打开下拉窗口中键入:注册表
导航到,就像在Windows的资源管理器中一样:HKEY_CURRENT_USER\软件\SimonTatham
成交
对于那些不想弄乱注册表的人,已经创建了一个保存到文件的油灰变体。它位于此处:http://jakub.kotrla.net/putty/
如果油灰团队将此作为主要分布的一个选项,那就太好了。
使用此方法还可以执行大量配置更改,例如更改所有会话字体。
从这里提取:http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html
对于那些需要从离线注册表文件导入Putty的人,例如,当您从崩溃的系统中恢复或只是移动到新机器并从旧驱动器上抓取数据时,还有一个解决方案值得一提:
http://www.nirsoft.net/utils/registry_file_offline_export.html
这个伟大而免费的控制台应用程序将导出整个注册表或仅导出特定的注册表项。在我的情况下,我只是将注册表文件从旧驱动器复制到与导出工具相同的目录,然后我在CMD窗口中使用以下命令和语法以管理员身份运行:
RegFileExport.exeNTUSER.DATputty.reg”HKEY_CURRENT_USER\Software\SimonTatham”
导入. reg文件并启动Putty后,一切都在那里。简单而高效。
我使用油灰连接管理器来创建会话数据库。将该数据库复制并导入到其他计算机很容易。
看这个方便的指南
这是如此容易得多导入注册表导出比上面所说的。+简单地说:
在Win 7 Pro上像冠军一样工作。
示例:如何从一个用户帐户转移到另一个用户帐户,例如,当创建一个新帐户并希望使用旧帐户中的油灰会话/配置时
过程:-将注册表键从旧帐户导出到文件-将注册表项从文件导入新帐户
导出reg密钥:(来自旧账户)
导入reg键:(新账户)
登录新账户,例如tom
打开正常的“命令提示符”(不是管理员!)
类型注册表
从菜单中选择“导入”
选择要导入的注册表文件,例如puttyconfig.reg
备注:不要使用“admin命令提示符”,因为设置位于“[HKEY_CURRENT_USER…]”下,注册表将以管理员身份运行,并为admin-user显示该部分,而不是用户从和/或到。
M0nhawk的回答在Windows 10上对我不起作用-它需要提升命令提示符并拒绝发出文件。
这工作并且不需要提升:
reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY putty.reg
ratil.life/first-useful-powershell-script-putty-to-ssh-config有一个PowerShell脚本,可以将会话转换为可在.ssh/config中使用的格式。它也可以在github上找到。
.ssh/config
此摘录包含代码的主要内容,并将结果配置直接打印到stdout:
# Registry path to PuTTY configured profiles$regPath = 'HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions' # Iterate over each PuTTY profileGet-ChildItem $regPath -Name | ForEach-Object { # Check if SSH configif (((Get-ItemProperty -Path "$regPath\$_").Protocol) -eq 'ssh') {# Write the Host for easy SSH use$host_nospace = $_.replace('%20', $SpaceChar)$hostLine = "Host $host_nospace" # Parse Hostname for special use cases (Bastion) to create SSH hostname$puttyHostname = (Get-ItemProperty -Path "$regPath\$_").HostNameif ($puttyHostname -like '*@*') {$sshHostname = $puttyHostname.split("@")[-1]}else { $sshHostname = $puttyHostname }$hostnameLine = "`tHostName $sshHostname" # Parse Hostname for special cases (Bastion) to create Userif ($puttyHostname -like '*@*') {$sshUser = $puttyHostname.split("@")[0..($puttyHostname.split('@').length - 2)] -join '@'}else { $sshHostname = $puttyHostname }$userLine = "`tUser $sshUser" # Parse for Identity File$puttyKeyfile = (Get-ItemProperty -Path "$regPath\$_").PublicKeyFileif ($puttyKeyfile) {$sshKeyfile = $puttyKeyfile.replace('\', '/')if ($prefix) { $sshKeyfile = $sshKeyfile.replace('C:', $prefix) }$identityLine = "`tIdentityFile $sshKeyfile"} # Parse Configured Tunnels$puttyTunnels = (Get-ItemProperty -Path "$regPath\$_").PortForwardingsif ($puttyTunnels) {$puttyTunnels.split() | ForEach-Object { # First character denotes tunnel type$tunnelType = $_.Substring(0,1)# Digits follow tunnel type is local port$tunnelPort = $_ -match '\d*\d(?==)' | Foreach {$Matches[0]}# Text after '=' is the tunnel destination$tunnelDest = $_.split('=')[1] if ($tunnelType -eq 'D') {$tunnelLine = "`tDynamicForward $tunnelPort $tunnelDest"} ElseIf ($tunnelType -eq 'R') {$tunnelLine = "`tRemoteForward $tunnelPort $tunnelDest"} ElseIf ($tunnelType -eq 'L') {$tunnelLine = "`tLocalForward $tunnelPort $tunnelDest"} } # Parse if Forward Agent is required$puttyAgent = (Get-ItemProperty -Path "$regPath\$_").AgentFwdif ($puttyAgent -eq 1) { $agentLine = "`tForwardAgent yes" } # Parse if non-default port$puttyPort = (Get-ItemProperty -Path "$regPath\$_").PortNumberif (-Not $puttyPort -eq 22) { $PortLine = "`tPort $puttyPort" } } # Build output string$output = "$hostLine`n$hostnameLine`n$userLine`n$identityLine`n$tunnelLine`n$agentLine`n" # Output to file if set, otherwise STDOUTif ($outfile) { $output | Out-File $outfile -Append}else { Write-Host $output }} }
如果你,像我一样,安装了新的Windows和只有之后你记得油灰会话,你仍然可以导入它们,如果你有旧的Windows硬盘驱动器或至少你的旧“家”目录备份(C:\Users\<user_name>)。
C:\Users\<user_name>
在此目录中应该有NTUSER.DAT文件。默认情况下它是隐藏的,因此您应该在Windows资源管理器中启用隐藏文件或使用其他文件浏览器。此文件包含旧Windows注册表的HKEY_CURRENT_USER分支。
NTUSER.DAT
HKEY_CURRENT_USER
要使用它,您需要在新Windows上打开regedit,然后选择HKEY_USERS键。
regedit
HKEY_USERS
然后选择File->Load Hive...并找到旧Windows安装的旧“home”目录。在此目录中应该有NTUSER.DAT文件。默认情况下它是隐藏的,因此,如果您没有启用在Windows资源管理器属性中显示隐藏文件,那么您只需手动将文件名输入“Load Hive”对话框的File name输入框并按输入。然后在下一个对话框窗口中输入一些键名以将旧注册表加载到其中。例如tmp。
File
Load Hive...
File name
tmp
您的旧注册表的HKEY_CURRENT_USER分支现在应该可以在当前注册表的HKEY_USERS\tmp分支下访问。
HKEY_USERS\tmp
现在将HKEY_USERS\tmp\Software\SimonTatham分支导出到putty.reg文件中,在您最喜欢的文本编辑器中打开此文件,并将所有HKEY_USERS\tmp字符串查找并替换为HKEY_CURRENT_USER。现在保存.reg文件。
HKEY_USERS\tmp\Software\SimonTatham
.reg
您现在可以通过双击将此文件导入当前的Windows注册表。请参阅M0nhawk的回答如何执行此操作。
最后,在注册表编辑器中选择HKEY_USERS\tmp分支,然后选择File->Unload Hive...并确认此操作。
Unload Hive...