Вот класс реестра, который удалит ssh: // и завершающий (на самом деле, все) / из URI перед передачей его в PuTTY, чтобы PuTTY мог открыть его напрямую:
На пользователя:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\ssh]
@="URL:ssh Protocol"
"URL Protocol"="ssh://"
[HKEY_CURRENT_USER\Software\Classes\ssh\shell]
[HKEY_CURRENT_USER\Software\Classes\ssh\shell\open]
[HKEY_CURRENT_USER\Software\Classes\ssh\shell\open\command]
@="cmd /V:ON /c set params=%1 && set params=!params:ssh://=! && start \"PuTTY\" \"c:\\Program Files (x86)\\PuTTY\\putty.exe\" \"!params:/=!\""
И для всех в системе:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ssh]
@="URL:ssh Protocol"
"URL Protocol"="ssh://"
[HKEY_CLASSES_ROOT\ssh\shell]
[HKEY_CLASSES_ROOT\ssh\shell\open]
[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="cmd /V:ON /c set params=%1 && set params=!params:ssh://=! && start \"PuTTY\" \"c:\\Program Files (x86)\\PuTTY\\putty.exe\" \"!params:/=!\""
Измените путь к файлу исходя из ваших потребностей.
/ V: ВКЛ совпадает с «SetLocal EnableDelayedExpansion»
/ c запускает команду
Я устанавливаю params для параметра, который является 'ssh: //domain.tld/'. Затем я убираю из него 'ssh: //' с помощью '! Params: ssh: // =!', Что является заменой для 'ssh: //' to '' для переменных params. Я назначаю это обратно params, теперь params = 'domain.tld /'. Затем я передаю его в putty и выполняю другую функцию find-replace, чтобы заменить '/' на '', чтобы удалить косую черту, которую надевает Windows, оставляя «domain.tld», который может использовать PuTTY.
Это позволяет мне обрабатывать все это в команде, введенной в записи реестра. Он вообще не выполняет никакой дезинфекции и его легко использовать (например, ssh: // && notepad открывает блокнот), поэтому вы можете захотеть изменить URI на что-то, что только вы знаете.
PowerShell
команду. Ну вот.