Проблема при попытке запустить .exe на удаленном с psexec (c #)? - PullRequest
2 голосов
/ 04 апреля 2011

Привет всем, Я пытаюсь запустить исполняемый файл на удаленной машине (не от, но на).

У меня очень простой код:

ProcessStartInfo info = new ProcessStartInfo("C:\\PsTools");
info.FileName = "psexec \\\\" + machine.Name + "\\C\\Program Files\\test.exe";
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);

При попытке запустить этот код я получаю сообщение об ошибке «Система не может найти указанный файл».

  1. В указанном каталоге находится файл с именем "test.bat".
  2. Удаленный компьютер находится в том же домене, и папка C является общей (я администратор).
  3. У меня установлен PsTools и настроен как переменная окружения.
  4. Я пробовал различные коды (например, если я не использую "psexec" в конструкторе ProcessStartInfo и свойстве FileName, файл bat запускается на локальной машине вместо удаленной ...) и ничего работает!

есть идеи?

1 Ответ

3 голосов
/ 04 апреля 2011

Я предполагаю, что он не может найти psexec, потому что вы установили UseShellExecute в false. Попробуйте указать полный путь к psexec.exe.

Вам также следует установить для свойства FileName значение , равное файлу, который вы хотите запустить, и свойство Arguments для аргументов командной строки, например:

ProcessStartInfo info = new ProcessStartInfo("C:\\PsTools");
info.FileName = @"c:\whatever\psexec.exe";
info.Arguments = @"""\\" + machine.Name + @"\C\Program Files\test.exe""";
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);

Обратите внимание, что я также добавил двойные кавычки в свойстве Arguments, чтобы оно не разбивалось на два аргумента из-за наличия в программных файлах пробела.

...