Existe uma maneira de fazer isso?
Ou eu tenho que tomar manualmente todos os registros do Registro?
Existe uma maneira de fazer isso?
Ou eu tenho que tomar manualmente todos os registros do Registro?
Respostas:
cmd.exe
, exigem prompt elevado:Somente sessões:
regedit /e "%USERPROFILE%\Desktop\putty-sessions.reg" HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
Todas as configurações:
regedit /e "%USERPROFILE%\Desktop\putty.reg" HKEY_CURRENT_USER\Software\SimonTatham
Somente sessões:
reg export HKCU\Software\SimonTatham\PuTTY\Sessions ([Environment]::GetFolderPath("Desktop") + "\putty-sessions.reg")
Todas as configurações:
reg export HKCU\Software\SimonTatham ([Environment]::GetFolderPath("Desktop") + "\putty.reg")
Clique duas vezes no *.reg
arquivo e aceite a importação.
cmd.exe
, exigem prompt de comando elevado:regedit /i putty-sessions.reg
regedit /i putty.reg
reg import putty-sessions.reg
reg import putty.reg
Nota : não substitua SimonTatham
pelo seu nome de usuário.
Nota : Ele criará um reg
arquivo na área de trabalho do usuário atual.
Nota : Ele não exportará chaves SSH relacionadas.
Quando tentei as outras soluções, recebi este erro:
Registry editing has been disabled by your administrator.
Phooey a isso, eu digo!
Eu montei os scripts do PowerShell abaixo para exportar e importar as configurações do PuTTY. O arquivo exportado é um arquivo .reg do Windows e será importado de forma limpa se você tiver permissão; caso contrário, use import.ps1 para carregá-lo.
Aviso : mexer com o registro como este é uma Bad Idea ™ e eu realmente não sei o que estou fazendo. Use os scripts abaixo por sua conta e risco e esteja preparado para que o departamento de TI redefina a imagem da sua máquina e faça perguntas desconfortáveis sobre o que estava fazendo.
Na máquina de origem:
.\export.ps1
Na máquina de destino:
.\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 -Append
foreach ($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"
Desculpas pelo código não-idiomático, não estou muito familiarizado com o Powershell. Melhorias são bem-vindas!
Inicie Executar, digite na janela suspensa Abrir: regedit
Navegue para, assim como no Windows Explorer:
HKEY_CURRENT_USER \ Software \ SimonTatham
Feito.
Para aqueles que precisam importar o Putty do arquivo de registro offline, por exemplo, quando você está se recuperando de um sistema travado ou simplesmente movendo-se para uma nova máquina e obtendo dados dessa unidade antiga, há mais uma solução que vale a pena mencionar:
http://www.nirsoft.net/utils/registry_file_offline_export.html
Esse ótimo e gratuito aplicativo de console exportará todo o registro ou apenas uma chave de registro específica. No meu caso, simplesmente copiei o arquivo de registro de uma unidade antiga para o mesmo diretório da ferramenta exportadora e usei o seguinte comando e sintaxe na janela do CMD:
RegFileExport.exe NTUSER.DAT putty.reg "HKEY_CURRENT_USER \ Software \ SimonTatham"
Depois de importar o arquivo .reg e iniciar o Putty, tudo estava lá. Simples e eficiente.
Foi muito mais fácil importar a exportação do registro do que o indicado acima. + Simplesmente:
Funcionou como um campeão no Win 7 Pro.
Para aqueles que não querem mexer no registro, foi criada uma variação da massa que salva no arquivo. Está localizado aqui: http://jakub.kotrla.net/putty/
Seria bom se a equipe de massa levasse isso como uma opção para a distribuição principal.
Exemplo:
Como transferir a configuração da massa e configuração da sessão de uma conta de usuário para outra, por exemplo, quando criou uma nova conta e deseja usar as sessões / configurações da massa da conta antiga
Processo:
- Exportar chave do registro da conta antiga para um arquivo
- Importar chave do registro do arquivo para a nova conta
Exportar chave de registro: (da conta OLD)
Importar chave de registro: (para uma nova conta)
Entre em uma nova conta, por exemplo, tom
Abra o 'prompt de comando' normal (NÃO é administrador!)
Digite 'regedit'
Selecione 'Importar' no menu
Selecione o arquivo de registro a ser importado, por exemplo, 'puttyconfig.reg'
Feito
Nota:
Não use um 'prompt de comando do administrador', pois as configurações estão localizadas em '[HKEY_CURRENT_USER ...]' e o regedit funcionaria como administrador e mostraria essa seção para o usuário administrador, e não para o usuário transferir e / ou para.
Uma melhoria na solução do bumerang para a qual importar dados PuTTY portable
.
Simplesmente mover exportado putty.reg
(com solução m0nhawk) para PuTTYPortable\Data\settings\
não funcionou. PuTTY Portable faça backup do arquivo e crie um novo vazio.
Para solucionar esse problema, mescle as duas putty.reg
cópias manualmente da configuração que você deseja migrar da sua exportada putty.reg
para a recém-criada PuTTYPortable\Data\settings\putty.reg
abaixo das linhas a seguir.
REGEDIT4
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]
"RandSeedFile"="D:\\Programme\\PuTTYPortable\\Data\\settings\\PUTTY.RND"
A resposta postada por @ m0nhawk não parece funcionar enquanto eu testo em uma máquina Windows 7. Em vez disso, o uso dos seguintes scripts exportaria / importaria as configurações da massa:
::export
@echo off
set regfile=putty.reg
pushd %~dp0
reg export HKCU\Software\SimonTatham %regfile% /y
popd
-
::import
@echo off
pushd %~dp0
set regfile=putty.reg
if exist %regfile% reg import %regfile%
popd
Usando esse método, também é possível executar alterações na configuração em massa, como a fonte de todas as sessões.
Extraído daqui: http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html
Eu uso o gerenciador de conexões de massa onde você cria um banco de dados de sessões. É fácil copiar e importar esse banco de dados para outros computadores.
Consulte este guia prático
Há um script do PowerShell em ratil.life/first-useful-powershell-script-putty-to-ssh-config que pode converter as sessões em um formato no qual possa ser usado .ssh/config
. Também pode ser encontrado no GitHub .
Este trecho contém as principais tripas do código e imprime a configuração resultante diretamente no stdout:
# Registry path to PuTTY configured profiles
$regPath = 'HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions'
# Iterate over each PuTTY profile
Get-ChildItem $regPath -Name | ForEach-Object {
# Check if SSH config
if (((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\$_").HostName
if ($puttyHostname -like '*@*') {
$sshHostname = $puttyHostname.split("@")[-1]
}
else { $sshHostname = $puttyHostname }
$hostnameLine = "`tHostName $sshHostname"
# Parse Hostname for special cases (Bastion) to create User
if ($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\$_").PublicKeyFile
if ($puttyKeyfile) {
$sshKeyfile = $puttyKeyfile.replace('\', '/')
if ($prefix) { $sshKeyfile = $sshKeyfile.replace('C:', $prefix) }
$identityLine = "`tIdentityFile $sshKeyfile"
}
# Parse Configured Tunnels
$puttyTunnels = (Get-ItemProperty -Path "$regPath\$_").PortForwardings
if ($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\$_").AgentFwd
if ($puttyAgent -eq 1) { $agentLine = "`tForwardAgent yes" }
# Parse if non-default port
$puttyPort = (Get-ItemProperty -Path "$regPath\$_").PortNumber
if (-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 STDOUT
if ($outfile) { $output | Out-File $outfile -Append}
else { Write-Host $output }
}
}
Se você, como eu, instalou o Windows novo e somente depois de se lembrar das sessões de massa, ainda será possível importá-las, se tiver um disco rígido antigo do Windows ou pelo menos o backup do diretório "inicial" antigo ( C:\Users\<user_name>
).
Neste diretório deve haver NTUSER.DAT
arquivo. Por estar oculto por padrão, você deve habilitar os arquivos ocultos no Windows Explorer ou usar outro navegador de arquivos. Este arquivo contém oHKEY_CURRENT_USER
ramificação do seu registro antigo do Windows.
Para usá-lo, você precisa abrir regedit
no seu novo Windows e selecionar a HKEY_USERS
tecla.
Em seguida, selecione File
-> Load Hive...
e encontre o diretório "home" antigo da instalação antiga do Windows. Neste diretório deve haver NTUSER.DAT
arquivo. Ele está oculto por padrão; portanto, se você não ativou a exibição de arquivos ocultos nas propriedades do Windows Explorer, basta digitar manualmente o nome do arquivo na File name
caixa de entrada da caixa de diálogo "Carregar seção" e pressionar Enter. Em seguida, na próxima janela de diálogo, digite um nome de chave para carregar o registro antigo. por exemplo tmp
.
A HKEY_CURRENT_USER
ramificação do seu registro antigo agora deve estar acessível na HKEY_USERS\tmp
ramificação do seu registro atual.
Agora exporte o HKEY_USERS\tmp\Software\SimonTatham
branch para o putty.reg
arquivo, abra esse arquivo no seu editor de texto favorito e encontre e substitua todas as HKEY_USERS\tmp
strings por HKEY_CURRENT_USER
. Agora salve o .reg
arquivo.
Você pode importar agora esse arquivo para o registro atual do Windows clicando duas vezes nele. Veja a resposta de m0nhawk como fazer isso.
No final, selecione HKEY_USERS\tmp
ramificação no editor de registro e selecione File
-> Unload Hive...
e confirme esta operação.