Я пытаюсь запустить plink.exe
(PuTTY Link, утилита командной строки / версия PuTTY) из приложения C # для установки обратного туннеля SSH, , но он больше не работает, как только я передаю правильный параметры .
Что это значит? Следующее работает должным образом: оно открывает окно командной строки, отображает, что я забыл передать пароль для выхода из аргумента -pw
, и показывает приглашение. Я знаю, что он получил аргументы, так как он специально запрашивает одну вещь, которую я не предоставил.
Uri uri = omitted;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd";
info.Arguments = "/k \"C:\\Program Files (x86)\\PuTTY\\plink.exe\" -R 3389:" + uri.Host + ":" + uri.Port + " -N -l username -pw"; // TODO pwd
Process p = Process.Start(info);
Я пытался сделать то же самое, вызвав plink.exe
напрямую вместо cmd.exe /k
, но окно закрывается сразу, что нежелательно для поиска ошибок.
НО, когда я передаю пароль в аргументах, plink.exe
отображает справку программы (показывает доступные параметры) и завершает работу:
Uri uri = omitted;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd";
info.Arguments = "/k \"C:\\Program Files (x86)\\PuTTY\\plink.exe\" -R 3389:" + uri.Host + ":" + uri.Port + " -N -l username -pw secretpassword";
Process p = Process.Start(info);
Нет указаний на отсутствующие параметры. Оба варианта cmd /k
и plink.exe
не работают (последний сразу закрывается, поэтому информации о различном поведении нет).
Когда я запускаю приложение из панели запуска Windows 7 с идентичными параметрами, оно открывает окно cmd.exe
и устанавливает соединение в соответствии с запросом.
Что не так? Есть ли способ plink.exe
замечать, что он не работает в реальной оболочке? Если да, то как я могу его обойти, как в «меню« Пуск »?»
Я надеюсь, что этот вопрос верен для SO, поскольку он, хотя и специально для отдельного приложения, вращается вокруг его успешного программного запуска.