C'è un modo per fare questo?
O devo prendere manualmente ogni record dal registro?
C'è un modo per fare questo?
O devo prendere manualmente ogni record dal registro?
Risposte:
cmd.exe
, richiede un prompt elevato:Solo sessioni:
regedit /e "%USERPROFILE%\Desktop\putty-sessions.reg" HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
Tutte le impostazioni:
regedit /e "%USERPROFILE%\Desktop\putty.reg" HKEY_CURRENT_USER\Software\SimonTatham
Solo sessioni:
reg export HKCU\Software\SimonTatham\PuTTY\Sessions ([Environment]::GetFolderPath("Desktop") + "\putty-sessions.reg")
Tutte le impostazioni:
reg export HKCU\Software\SimonTatham ([Environment]::GetFolderPath("Desktop") + "\putty.reg")
Fare doppio clic sul *.reg
file e accettare l'importazione.
cmd.exe
, richiede un prompt dei comandi elevato:regedit /i putty-sessions.reg
regedit /i putty.reg
reg import putty-sessions.reg
reg import putty.reg
Nota : non sostituire SimonTatham
con il tuo nome utente.
Nota : creerà un reg
file sul desktop dell'utente corrente.
Nota : non esporterà le chiavi SSH correlate.
Quando ho provato le altre soluzioni ho riscontrato questo errore:
Registry editing has been disabled by your administrator.
Phooey a quello, dico io!
Ho messo insieme i seguenti script PowerShell per esportare e importare le impostazioni di PuTTY. Il file esportato è un file .reg di Windows e verrà importato in modo pulito se si dispone dell'autorizzazione, altrimenti utilizzare import.ps1 per caricarlo.
Attenzione : scherzare con il registro in questo modo è una Bad Idea ™ e non so davvero cosa sto facendo. Usa gli script di seguito a tuo rischio, e sii pronto a far rivedere l'immagine del tuo reparto IT e farti domande scomode su quello che stavi facendo.
Sulla macchina di origine:
.\export.ps1
Sulla macchina target:
.\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"
Mi scuso per il codice non idiomatico, non ho molta familiarità con Powershell. I miglioramenti sono benvenuti!
Avvia Esegui, quindi digita la finestra a discesa Apri: regedit
Passare a, proprio come in Esplora risorse di Windows:
HKEY_CURRENT_USER \ Software \ SimonTatham
Fatto.
Per quelli di voi che hanno bisogno di importare Putty da file di registro offline, ad esempio quando si esegue il ripristino da un sistema danneggiato o semplicemente si trasferisce su una nuova macchina e si prelevano i dati da quella vecchia unità, c'è un'altra soluzione degna di nota:
http://www.nirsoft.net/utils/registry_file_offline_export.html
Questa fantastica e gratuita applicazione console esporterà l'intero registro o solo una chiave di registro specifica. Nel mio caso ho semplicemente copiato il file di registro da una vecchia unità nella stessa directory dello strumento esportatore e quindi ho usato il seguente comando e sintassi nella finestra CMD eseguita come amministratore:
RegFileExport.exe NTUSER.DAT putty.reg "HKEY_CURRENT_USER \ Software \ SimonTatham"
Dopo aver importato il file .reg e avviato Putty tutto era lì. Semplice ed efficiente
Per coloro che non vogliono fare confusione con il registro, è stata creata una variante di stucco che salva nel file. Si trova qui: http://jakub.kotrla.net/putty/
Sarebbe bello se il team di stucco lo prendesse come opzione nella distribuzione principale.
È stato molto più semplice importare l'esportazione del registro rispetto a quanto indicato sopra. + Semplicemente:
Ha funzionato come un campione su Win 7 Pro.
Esempio:
come trasferire la configurazione dello stucco e la configurazione della sessione da un account utente a un altro, ad esempio quando viene creato un nuovo account e si desidera utilizzare le sessioni / configurazioni dello stucco dal vecchio account
Processo:
- Esporta la chiave di registro dal vecchio account in un file
- Importa chiave di registro dal file in un nuovo account
Esporta chiave reg: (dall'account VECCHIO)
Chiave di importazione: (nel NUOVO account)
Accedi al NUOVO account, ad es. Tom
Apri il normale 'prompt dei comandi' (NON admin!)
Digita "regedit"
Seleziona 'Importa' dal menu
Seleziona il file di registro da importare, ad esempio "puttyconfig.reg"
Fatto
Nota:
non utilizzare un "prompt dei comandi dell'amministratore" poiché le impostazioni si trovano in "[HKEY_CURRENT_USER ...]" e regedit verrebbe eseguito come amministratore e mostrerebbe quella sezione per l'utente amministratore piuttosto che per l'utente da cui trasferire e / o per.
Un miglioramento della soluzione di bumerang in cui importare i dati PuTTY portable
.
putty.reg
Spostare semplicemente esportato (con la soluzione m0nhawk) su PuTTYPortable\Data\settings\
non funzionava. PuTTY Portable esegue il backup del file e creane uno nuovo vuoto.
Per ovviare a questo problema, unire entrambi putty.reg
copiando manualmente la configurazione che si desidera migrare dalla riga esportata putty.reg
di seguito alla nuova appena creata PuTTYPortable\Data\settings\putty.reg
.
REGEDIT4
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]
"RandSeedFile"="D:\\Programme\\PuTTYPortable\\Data\\settings\\PUTTY.RND"
La risposta inviata da @ m0nhawk non sembra funzionare mentre collaudo su un computer con Windows 7. Invece, usando i seguenti script si esporterebbero / importerebbero le impostazioni di putty:
::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
Utilizzando questo metodo è anche possibile eseguire modifiche alla configurazione di massa, come cambiare il carattere di tutte le sessioni.
Estratto da qui: http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html
Uso la gestione connessione putty in cui si crea un database di sessioni. È facile copiare e importare quel database su altri computer.
Vedi questa guida pratica
Esiste uno script di PowerShell su ratil.life/first-useful-powershell-script-putty-to-ssh-config che può convertire le sessioni in un formato che può essere utilizzato in .ssh/config
. Può anche essere trovato su GitHub .
Questo estratto contiene le intestazioni principali del codice e stamperà la configurazione risultante direttamente su 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, come me, hai installato una nuova Windows e solo dopo aver ricordato le sessioni di stucco, puoi comunque importarle, se hai il vecchio disco rigido di Windows o almeno la tua vecchia directory "home" di cui è stato eseguito il backup ( C:\Users\<user_name>
).
In questa directory dovrebbe esserci un NTUSER.DAT
file. È nascosto per impostazione predefinita, quindi è necessario abilitare i file nascosti in Esplora risorse di Windows o utilizzare un altro browser di file. Questo file contiene il fileHKEY_CURRENT_USER
ramo del tuo vecchio registro di Windows.
Per usarlo, è necessario aprire regedit
sulla nuova finestra di Windows e selezionare il HKEY_USERS
tasto.
Quindi selezionare File
-> Load Hive...
e trovare la vecchia directory "home" della vecchia installazione di Windows. In questa directory dovrebbe esserci un NTUSER.DAT
file. È nascosto per impostazione predefinita, quindi, se non hai abilitato la visualizzazione dei file nascosti nelle proprietà di Windows Explorer, puoi semplicemente inserire manualmente il nome del file nella File name
casella di input della finestra di dialogo "Carica hive" e premere Enter. Quindi nella finestra di dialogo successiva inserisci un nome chiave per caricare il vecchio registro. es tmp
.
Il HKEY_CURRENT_USER
ramo del tuo vecchio registro ora dovrebbe essere accessibile sotto il HKEY_USERS\tmp
ramo del tuo registro attuale.
Ora esporta il HKEY_USERS\tmp\Software\SimonTatham
ramo in un putty.reg
file, apri questo file nel tuo editor di testo preferito e trova e sostituisci tutte le HKEY_USERS\tmp
stringhe con HKEY_CURRENT_USER
. Ora salva il .reg
file.
Ora puoi importare questo file nel tuo attuale registro di Windows facendo doppio clic su di esso. Vedi la risposta di m0nhawk su come farlo.
Alla fine, seleziona il HKEY_USERS\tmp
ramo nell'editor del registro, quindi seleziona File
-> Unload Hive...
e conferma questa operazione.