Пакетное манипулирование строкой в ​​команде URI - PullRequest
0 голосов
/ 19 июня 2020

Можно ли использовать пакетные команды в вызове команды URI на Windows 10?

Это немного странный вариант использования, но в конечном итоге я бы хотел выбрать протокол vn c связать и открыть сеанс RDP с удаленным компьютером. Таким образом, нажатие vnc://machine.name/ открывает сеанс RDP с machine.name с использованием встроенного Windows RDP-клиента (msts c .exe).

Я создал запись vnc в HKCR Windows куст реестра:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\vnc]
"URL Protocol"="\"\""
@="\"URL:vnc\""

[HKEY_CLASSES_ROOT\vnc\DefaultIcon]
@="\"%systemroot%\\system32\\mstsc.exe\""

[HKEY_CLASSES_ROOT\vnc\shell]

[HKEY_CLASSES_ROOT\vnc\shell\open]

[HKEY_CLASSES_ROOT\vnc\shell\open\command]
@="mstsc.exe /v:%1:*vnc://=%"


Моя первая попытка заключалась в том, чтобы предоставить %1 непосредственно команде mstsc.exe /v:; однако после некоторого тестирования я определил, что %1 отправляет всю ссылку URI на команду (т.е. mstsc.exe /v:vnc://machine.name/). Теперь я пытаюсь удалить компонент vnc:// из аргумента, чтобы передать его в mstsc.exe. Проблема в том, что никаких манипуляций со строками не происходит.

Remote Desktop client shows no string manipulation has occurred

Возможно ли это? Мой план резервного копирования - написать пакетный сценарий, который запускается при нажатии ссылки vnc://, удаляет имя хоста из параметра и запускает mstsc.exe в правильном формате. Однако я бы не хотел, чтобы на компьютере был физический файл.

...