Запуск .exe с веб-сайта - PullRequest
       20

Запуск .exe с веб-сайта

4 голосов
/ 17 января 2010

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

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

Если мне нужно установить определенные разрешения / безопасность - я могу.

Ответы [ 5 ]

3 голосов
/ 17 января 2010

Да, это можно сделать, но это не рекомендуется.

Идеальным решением для запуска сценариев обслуживания / исполняемых файлов является их планирование с использованием cron в системах Unix / Linux или с использованием запланированных задач в Windows. Некоторые преимущества автоматизированного подхода по сравнению с дистанционным ручным запуском:

  • Серверный компьютер работает самостоятельно. Клиенты могут потерпеть неудачу, а люди могут забыть. Пока сервер работает, сервер будет обновляться независимо от состояния клиентских машин или людей.
  • Когда будет запущен исполняемый файл? Каждый раз, когда посещается определенная страница? Что делать, если страница обновляется? Для ресурсоемкого сценария / исполняемого файла это может серьезно снизить производительность сервера. Вам нужно будет кодировать правила для обработки нескольких запросов и мониторинга запущенных процессов обслуживания. Крон и запланированные задачи уже используют эти возможности.
1 голос
/ 17 января 2010

Это возможно, но почти наверняка это плохая идея. Какая среда / веб-сервер? Вам просто нужно установить соответствующие права на выполнение для файла.

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

1 голос
/ 17 января 2010

Зависит от того, какой язык вы используете; большинство языков сценариев на стороне сервера позволяют использовать команды оболочки, например:

$result=`wc -l /etc/passwd`;

выполнил команду unix из perl.

1 голос
/ 17 января 2010

Очень грубый вариант, предполагая, что IIS: изменить доступ для выполнения с «Только сценарии» или «Нет» на «Сценарии и исполняемые файлы»

Чтобы сделать это менее грубым, вы должны иметь исполняемый файл, реализующий интерфейс CGI (если он находится под вашим контролем.

И, если вы хотите использовать ASP.NET для добавления авторизации / аутентификации, код (C #) для этого будет:

System.Diagnostics.Process process;

var startInfo = New System.Diagnostics.ProcessStartInfo("C:\file.exe")

process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
0 голосов
/ 17 января 2010

Большинство веб-языков (я знаю по крайней мере Java и PHP) позволяют выполнять аргумент командной строки из программы.

...