Чи є спосіб це зробити?
Або я повинен вручну взяти кожен запис із реєстру?
Чи є спосіб це зробити?
Або я повинен вручну взяти кожен запис із реєстру?
Відповіді:
cmd.exe
, вимагають підвищеного підказки:Тільки сеанси:
regedit /e "%USERPROFILE%\Desktop\putty-sessions.reg" HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
Усі налаштування:
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
файлу та прийміть імпорт.
cmd.exe
, вимагають підвищеного командного рядка:regedit /i putty-sessions.reg
regedit /i putty.reg
reg import putty-sessions.reg
reg import putty.reg
Примітка : не замінюйте SimonTatham
своє ім’я користувача.
Примітка . Це створить reg
файл на робочому столі поточного користувача.
Примітка . Він не експортує пов'язані SSH ключі.
Коли я спробував інші рішення, я отримав цю помилку:
Registry editing has been disabled by your administrator.
Фой до цього, я кажу!
Я зібрав нижче наведені нижче сценарії повноважень для експорту та імпорту налаштувань PuTTY. Експортований файл являє собою файл Windows.
Попередження : возитися з реєстром, як це погана ідея ™, і я не знаю, що я роблю. Використовуйте наведені нижче сценарії на свій страх і ризик, і будьте готові, щоб ваш ІТ-відділ переобразував вашу машину і задавав вам незручні запитання про те, що ви робили.
На вихідній машині:
.\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 -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"
Вибачте за неідіоматичний код, я не дуже знайомий з Пауершеллом. Поліпшення вітаються!
Запустіть запуск, а потім введіть у відкритому спадному вікні: regedit
Перейдіть до
пункту «Провідник Windows»: HKEY_CURRENT_USER \ Software \ SimonTatham
Зроблено.
Для тих з вас, кому потрібно імпортувати Putty з офлайн-файлу реєстру, наприклад, коли ви оновлюєтесь від аварійної системи або просто переходите на нову машину і захоплюєте дані зі старого диска, є ще одне рішення, яке варто згадати:
http://www.nirsoft.net/utils/registry_file_offline_export.html
Цей великий та безкоштовний консольний додаток експортує весь реєстр або лише певний ключ реєстру. У моєму випадку я просто скопіював файл реєстру зі старого диска в той самий каталог, що й інструмент експортера, а потім я застосував наступні команди та синтаксис у вікні CMD, запустившись як адміністратор:
RegFileExport.exe NTUSER.DAT putty.reg "HKEY_CURRENT_USER \ Software \ SimonTatham"
Після імпорту файлу .reg та запуску Putty все було там. Простий та ефективний.
Для тих, хто не хоче возитися з реєстром, створена версія шпаклівки, яка зберігає файл. Він розташований тут: http://jakub.kotrla.net/putty/
Було б добре, якби команда шпаклівки взяла це як варіант в основний дистрибутив.
Це було набагато простіше імпортувати експорт реєстру, ніж те, що зазначено вище. + Просто:
Працював як чемпіон на Win 7 Pro.
Приклад:
Як перенести конфігурацію шпаклівки та конфігурацію сеансу з одного облікового запису користувача на інший, наприклад, коли створено новий обліковий запис і потрібно використовувати сеанси / конфігурації шпаклівки зі старого облікового запису
Процес:
- Експорт ключа реєстру зі старого облікового запису у файл
- Імпорт ключа реєстру з файлу в новий рахунок
Ключ регістру експорту: (з облікового запису OLD)
Ключ регістру імпорту: (у НОВИЙ рахунок)
Увійдіть у новий аккаунт, наприклад, tom
Відкрийте звичайний 'командний рядок' (НЕ адміністратор!)
Введіть "regedit"
Виберіть "Імпорт" у меню
Виберіть файл реєстру для імпорту, наприклад, "puttyconfig.reg"
Зроблено
Примітка.
Не використовуйте командний рядок адміністратора, оскільки налаштування розташовані в розділі "[HKEY_CURRENT_USER ...]", а regedit запускатиметься як адміністратор і показуватиме цей розділ для користувача-адміністратора, а не для передачі користувача з та / або до.
Вдосконалення рішення bumerang для імпорту даних у PuTTY portable
.
Просто переміщуємо експортований putty.reg
(з рішенням m0nhawk) доPuTTYPortable\Data\settings\
не спрацювало. PuTTY Portable створити резервну копію файлу та створити новий порожній.
Щоб вирішити цю проблему, з’єднайте обидві putty.reg
копії вручну конфігурації, яку потрібно перенести з експортованого, putty.reg
до новоствореного PuTTYPortable\Data\settings\putty.reg
нижче наступних рядків.
REGEDIT4
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]
"RandSeedFile"="D:\\Programme\\PuTTYPortable\\Data\\settings\\PUTTY.RND"
Відповідь, опублікована @ m0nhawk, здається, не працює, коли я тестую на машині Windows 7. Натомість за допомогою наступних сценаріїв було б експортувати / імпортувати налаштування шпаклівки:
::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
За допомогою цього методу можна також здійснити масові зміни конфігурації, такі як зміна шрифту всіх сеансів.
Витягнуто звідси: http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html
Я використовую диспетчер з'єднань putty, де ви створюєте базу даних сесій. Копіювати та імпортувати цю базу даних на інші комп'ютери легко.
Дивіться цей зручний посібник
На ratil.life/first-useful-powershell-script-putty-to-ssh-config існує сценарій PowerShell, який може конвертувати сеанси у формат, в якому можна використовувати .ssh/config
. Його також можна знайти на GitHub .
Цей уривок містить основні кишки коду і друкує отриманий конфігурацію безпосередньо до 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 }
}
}
Якщо ви, як і я, встановили нову Windows і лише після того, як ви згадаєте про сеанси шпаклівки, ви все одно можете імпортувати їх, якщо у вас старий жорсткий диск Windows або принаймні створена резервна копія старого «домашнього» каталогу ( C:\Users\<user_name>
).
У цьому каталозі має бути NTUSER.DAT
файл. Він прихований за замовчуванням, тому вам слід включити приховані файли у вашому провіднику Windows або використовувати інший браузер файлів. Цей файл міститьHKEY_CURRENT_USER
гілку вашого старого реєстру Windows.
Щоб скористатися ним, вам потрібно відкрити regedit
нову Windows і вибрати HKEY_USERS
ключ.
Потім виберіть File
-> Load Hive...
і знайдіть старий "домашній" каталог вашої старої установки Windows. У цьому каталозі має бути NTUSER.DAT
файл. Він прихований за замовчуванням, тому, якщо ви не увімкнули показ прихованих файлів у ваших властивостях провідника Windows, ви можете просто ввести ім'я файлу вручну в File name
поле введення діалогового вікна "Завантажити вулик" та натиснути Enter. Потім у наступному діалоговому вікні введіть якесь ключове ім’я, щоб завантажити в нього старий реєстр. напр tmp
.
Тепер ваша HKEY_CURRENT_USER
філія реєстру повинна бути доступною під HKEY_USERS\tmp
гілкою вашого поточного реєстру.
Тепер експортуйте HKEY_USERS\tmp\Software\SimonTatham
гілку у putty.reg
файл, відкрийте цей файл у вашому улюбленому текстовому редакторі та знайдіть та замініть всі HKEY_USERS\tmp
рядки HKEY_CURRENT_USER
. Тепер збережіть .reg
файл.
Ви можете імпортувати цей файл у поточний реєстр Windows, двічі клацнувши його. Дивіться відповідь m0nhawk, як це зробити.
Зрештою, виберіть HKEY_USERS\tmp
гілку в редакторі реєстру, а потім виберіть File
-> Unload Hive...
і підтвердіть цю операцію.