Как открыть командную строку из моего приложения на стороне клиента

Пожалуйста, помогите мне, как открыть командную строку со стороны клиента. Когда я нажимаю на кнопку, она должна открыть командную строку. Я пробовал на своем ПК, и он работает в среде разработки, но при развертывании в IIS он не открывается.

Код:

    var Processstartinfo = new ProcessStartInfo
    {           
        FileName = "cmd"
    };
    Process process = Process.Start(Processstartinfo);

person santhosh    schedule 26.04.2011    source источник
comment
Это код на стороне сервера.. так что он откроет это на сервере   -  person V4Vendetta    schedule 26.04.2011
comment
Вы хотите, чтобы кто-то посетил ваш веб-сайт и чтобы появилось окно cmd.exe? Каковы причины вашего желания этого? Вы понимаете, что если бы поставщики браузеров разрешили это, то было бы до абсурда легко захватить ваш компьютер и украсть все, что находится на вашем диске.   -  person IanNorton    schedule 26.04.2011
comment
На самом деле в моем приложении пакетные файлы сценариев автоматической оболочки будут запускаться @background. Поэтому, если какой-либо пользователь хочет перепроверить эти команды, они могут отследить команды, открыв командную строку, поэтому нам нужно открыть   -  person santhosh    schedule 26.04.2011


Ответы (2)


asp.net работает на сервере. Я подозреваю, что вы работаете в cassini локально, поэтому рабочий стол вашего сервера и рабочий стол клиента — это одно и то же. Вы открываете командную строку на сервере; что является интересной поверхностью атаки DDOS, если вы думаете об этом (т.е. не делайте этого).

Краткий ответ: вы не можете этого сделать. Ни один браузер не позволил бы (или не должен... я сделаю поправку на IE ;p) это. Клиентской ОС даже не требуется поддерживать командную строку или .NET; и даже если это так, очень немногие браузеры позволят вам создать процесс.

person Marc Gravell    schedule 26.04.2011
comment
@santhosh, если вам нужно сделать что-то, что вы не должны делать из браузера, значит, вы сделали плохой выбор дизайна. Браузер не может надежно это сделать. Есть несколько хаков только для IE, которые я могу придумать, но это наслоение на второе неудачное дизайнерское решение. Если вам нужна командная строка на клиенте, вы должны писать настольное приложение, а не приложение для браузера. - person Marc Gravell; 26.04.2011

Вам нужно создать поддельную командную строку, чтобы иметь возможность сделать это. Как сказал Марк, это представляет огромный риск для безопасности, и я бы никогда этого не сделал.

Чтобы решить эту проблему, вам нужно перенаправить стандартный ввод/вывод, чтобы вы могли читать/записывать их. Вот пример. Создайте командный процесс и сохраните объект Process в переменной сеанса.

На стороне клиента добавьте <div id="commandOutput"></div> и <input type="text" name="command" /><input type="submit" value="Execute command" />. Используйте jquery или аналогичный, чтобы перехватить событие нажатия кнопки.

Используйте ajax для отправки формы. Выполните команду, записав ее в stdin объекта Process, сохраненного в переменной сеанса. Прочитайте из стандартного вывода и верните результат клиенту, который добавит его в commandOutput div, используя jQuery или что-то еще.

Это должно сработать. Обратите внимание, что любой, у кого есть доступ, может делать все с вашим сервером.

person jgauffin    schedule 26.04.2011
comment
это ответ, но (как вы заметили) такой опасный. Кроме того, это не очень хорошо работает против фарма. RPD по сравнению с VPN здесь так предпочтительнее ... - person Marc Gravell; 26.04.2011