Запустите команду DOS в .NET - PullRequest
3 голосов
/ 06 августа 2009

У меня есть набор команд, таких как:

C:
cd Project
testproj.exe

Моя система получает эти команды одну от удаленной системы. Мне нужно выполнить каждую команду в cmd.exe при получении команды из удаленной системы. Как выполнить это с помощью .NET?

Мне также нужно вернуть результат testproj.exe на удаленную машину. Как получить результат после запуска команды?

Ответы [ 5 ]

6 голосов
/ 06 августа 2009

Process.Start cmd.exe и перехватывает StandardIn, StandardOut и StandardError. Затем, когда приходит команда, просто запишите ее в StandardIn и прочитайте StandardOut / Error для возврата. Все это должно быть не более 15 LOC.

Это, как говорится, просто установить сервер Telnet, вероятно, будет проще - так как это звучит так, как будто вы по сути копируете ....

5 голосов
/ 06 августа 2009
var process = System.Diagnostics.Process.Start( "testproj.exe" );
process.WaitForExit();
var result = process.ExitCode;

Это действительно не будет чтить такие вещи, как "C:" или "CD path". Вместо этого вы хотите создать пакетный файл во временной папке, а затем вызвать пакетный файл.

4 голосов
/ 06 августа 2009

Взгляните на System.Diagnostics.Process . Вы можете перенаправить stdout / stderr куда-нибудь, чтобы получить вывод.

1 голос
/ 06 августа 2009

Вместо того, чтобы пытаться поддерживать все команды DOS, просто внедрите небольшое подмножество, которое гарантирует, что ничего не может пойти не так. Как Не разрешать УДАЛИТЬ, RD, ФОРМАТ и т.д.

Итак, в основном у вас будет только подмножество команд DOS. Как только у вас есть набор команд, вы можете кодировать эти конкретные команды, используя механизмы расширения или как подключаемые модули.

Это также поможет вам надежно защитить вашу машину от злонамеренных атак, и в худшем случае это может быть отправка данных, но с машины данные / система никогда не пострадают.

ОБНОВЛЕНИЕ: выполнение конкретных команд остается за вами. Вы можете использовать .NET API или иметь System.Diagnostics.Process

1 голос
/ 06 августа 2009

Операции C: и cd Project могут быть выполнены внутри приложения запуска с использованием класса Directory с использованием метода SetCurrentDirectory .

Затем просто используйте класс Process , чтобы запустить исполняемый файл testproj.exe .

...