Как запустить exe файл на хостинге

Обновлено: 04.07.2024

Проблема в следующем, в локальной сети поднят IIS и на нем я публикую сайты ASP MVC.

Создал директорию на сайте EXE

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

47k 11 11 золотых знаков 74 74 серебряных знака 143 143 бронзовых знака 1,452 2 2 золотых знака 16 16 серебряных знаков 43 43 бронзовых знака Вам же в прошлом вопросе ещё написали, " Для хрома придется писать расширение, для IE - использовать ActiveX." Какую проблему вы пытаетесь решить? vncviewer.exe - это UI приложение. IIS - сервис без доступа к десктопу. В лучшем случае - VNC будет висеть в фоне на сервере (пользователь, особенно со стороны браузера, его не увидит - это вообще физически другая машина). В худшем - просто тихо упадет при старте. Вы действительно думаете, что радикально поменять суть вопроса после того, как на него дано три ответа и объявлена награда - это хорошая идея? Теперь есть два отличных варианта - или вы откатываете правку, возвращая вопрос к первоначальной формулировке, или все ответы подлежат удалению как "не является ответом"

Код запуска процесса отрабатывает на сервере. Соответственно, VNC запускается на сервере, в неинтерактивной сессии.

на локальной машине все работает без проблем

На локальной сайт у вас скорее всего запущен под IIS Express, который выполняется в текущей сессии пользователя. Т.е.

  • Вы вызываете действие через браузер
  • Ваш код выполняется в IIS Express, запускает VNC.exe в той же сессии, в которой запущен IIS
  • Окно VNC появляется у вас перед глазами ("все работает!")

как только публикую на сервер, ничего не происходит

  • Вы вызываете действие через браузер
  • Ваш код выполняется в IIS на сервере, , запускает VNC.exe в той же сессии, в которой запущен IIS - в неинтерактивной сессии на сервере.
  • "Неинтерактивная" означает что окно не показывается пользователю. "на сервере" означает что пользователь на клиентской стороне вообще никак его не увидит.

Никакими настройками на стороне сервера это решить нельзя. Витихаря скачать запустить EXE-файл на сторону клиента - тоже - все современные браузеры будут активно этому препятствовать.

Возможные варианты - завернуть запуск VNC + обертку для его запуска с нужными параметрами во что-то типа ClickOnce или Squirrel (It’s like ClickOnce but Works). Поставить на странице ссылку на скачиваение обертки + инструкцию по запуску и надеятся что пользователь не побоится запустить ее.



В наше время даже для собак придумали удаленное управление.

Возвращаясь к циклу «Конспект Админа», мне хотелось бы рассказать о вариантах запуска исполняемых программ на удаленных компьютерах. Эта статья будет интересна тем, у кого еще нет систем централизованного управления, но уже есть понимание утомительности ручного обхода рабочих станций и серверов. Либо тем, кому решения «под ключ» не интересны ввиду неспортивности.

В качестве того, зачем нужен такой запуск программ, можно привести недавнюю истерию с Петей\Не-Петей, когда все бросились проверять\отключать SMBv1 и загружать обновления. Да и провести инвентаризацию или установить срочный патч таким методом тоже можно.

Когда-то давно я устроился работать в организацию в период эпидемии Kido\Conficker. Наиболее простым способом выяснить, все ли хорошо в ИС компании, была славная утилита от Касперского под названием Kido Killer, которая проверяла наличие вируса и устраняла его. Запускать программу на доброй сотне машин руками было невесело, поэтому пришлось знакомиться с автоматизацией.

Если в операционных системах *nix для удаленного запуска, как правило, используется SSH, то у Windows способов запуска программ и скриптов воистину как песка в пустыне. Я разберу основные варианты, как общеизвестные, так и экзотические. Таких очевидных вещей как telnet-сервер касаться не буду, тем более Microsoft уже убрала его из современных ОС.

Psexec

Пожалуй, это первое, что приходит на ум, когда идет речь об удаленном запуске программ. Утилита от Марка Руссиновича используется еще со времен Windows NT и до сих пор применяется. Помимо основной функции, можно использовать ее и как Runas, и для запуска программ в пользовательской сессии терминального сервера. Psexec также позволяет задавать ядра процессора, на которых будет запускаться программа, и ее приоритет в системе.

В качестве примера посмотрим, установлено ли обновление, закрывающее нашумевшую уязвимость SMB на списке компьютеров:

В файле computers.txt находится список компьютеров. Для запуска по всему домену можно использовать \\*. В файле \\server\share\log.txt будут появляться имена рабочих станций или серверов без обновления. Если в домене существуют компьютеры с *nix на борту или нет доступа к административному сетевому ресурсу Admin$ ― команда на этой машине не выполнится, но обработка продолжится. Чтобы скрипт не зависал при каждой попытке подключения, можно задать тайм-аут с помощью ключа -n.

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

К минусам Psexec можно отнести то, что она из-за своего удобства и популярности часто используется вирусописателями. Поэтому антивирусные системы могут обнаруживать утилиту как опасность вида remote admin.

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

Для управления системами Windows с помощью разных графических утилит часто используется WMI (Windows Management Instrumentation) ― реализация объектно-ориентированного стандарта управления WBEM. В качестве утилиты с графическим интерфейсом для работы с WMI можно использовать wbemtest.exe.

Для работы с WMI из консоли создана wmic.exe. Например, для проверки установленных обновлений вместо жутковатой конструкции из предыдущего примера можно использовать простую команду:

Использовать список компьютеров также можно командой /node:"@computers.txt".

Еще при помощи WMI можно запускать программы – синтаксис предельно прост:

К сожалению, в отличие от Psexec, получить вывод в консоли не получится ― придется выводить результаты команды в файл.

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

Групповые политики и скрипты

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



Скрипты, выполняющиеся при старте и завершении системы.



Скрипты, выполняющиеся при входе и выходе пользователя из системы.

Скрипты, настраиваемые в пользовательском разделе, выполняются от имени пользователя, а в разделе компьютера ― под аккаунтом SYSTEM.

Назначенные задания

Довольно интересный способ, заслуживающий право на жизнь. Назначенные задания можно создавать из командной строки при помощи утилиты schtasks.exe, выполнять их, затем удалять. Подробнее с синтаксисом можно ознакомиться в документации, я же разберу пример использования назначенных заданий в доменной среде. Предположим, нам нужно выполнить команду как можно быстрее вне зависимости от того, выключен компьютер или нет. Для этого используются так называемые предпочтения групповых политик (Group Policy Preference).

Искать установку назначенных заданий следует в конфигурации компьютера или пользователя ― «Настройка ― Параметры панели управления ― Назначенные задания».



Создание нового назначенного задания.

Для выполнения команды или скрипта ASAP понадобится создать «Немедленную задачу (Windows 7 и выше)». Если вдруг в инфраструктуре остались машины под управлением Windows XP, то подойдет «Очередное задание (Windows XP)».

Стоит сделать несколько политик с соответствующими WMI-фильтрами или создать два разных назначенных задания в одной политике с нацеливанием ― например, при помощи того же WMI-фильтра. Это поможет избежать конфликтов в разнородной среде со старыми и новыми Windows.

Пример WMI-фильтра для применения политики только на компьютерах с Windows XP:

В остальном процедура создания назначенного задания тривиальна. Единственное, не забывайте отметить пункт «Применить один раз и не применять повторно», если задача не требует повторного запуска.



Запускаем немедленную задачу только один раз.

При использовании таких назначенных заданий программа запустится, как только компьютер получит обновление групповой политики. Это удобно: не нужно проверять доступность компьютеров в случае Psexec и wmic и заставлять пользователей перезагружать машины, как в случае скриптов групповых политик. При необходимости можно скопировать файл скрипта локально в разделе «Настройка ― Конфигурация Windows ― Файлы».

Назначенные задания позволяют явно задать имя пользователя для запуска программы, в том числе и для SYSTEM.

Через реестр

Модификация реестра на пользовательских машинах ― странный вариант, лишь на случай крайней необходимости. Можно использовать ветки Run или RunOnce. Подробнее о них ― в документации. Сама модификация реестра может проводиться через групповые политики или из командной строки ― например, такой командой:

В зависимости от ветки реестра, процесс будет выполняться или под пользователем, выполнившим вход в систему, или под аккаунтом SYSTEM.

Есть и другие способы, такие как правка ярлыков в папке «Автозагрузка» или добавление в ярлык к популярной программе && script.cmd, но эти методы уже из серии «можно, но не нужно».

Теперь перейдем к новым инструментам.

PowerShell, оправдывая свое название, может подключаться к удаленным компьютерам при помощи WMI, RPC и WS-Management (WSMan). Использование последнего метода требует предварительной настройки.

Командлеты, не требующие предварительной настройки, как правило, имеют параметр ComputerName, но не имеют параметра Session. Посмотреть список таких командлетов можно командой:

Для настройки WSMan в общем случае достаточно выполнить команду Enable-PSRemoting-Force. Она запустит службу удаленного управления WinRM и пропишет исключения в фаерволе ― в принципе, это можно сделать для всего домена при помощи групповых политик. Подробнее настройка описана в документации.

После того как все компьютеры будут готовы принимать запросы, мы сможем подключаться при помощи соответствующих командлетов PowerShell. Для проверки возможности подключения используется командлет Test-WSMan.



Проверка возможности подключения.

Для того чтобы выполнить определенную команду или скрипт, используется командлет Invoke-Command со следующим синтаксисом:

Где COMPUTER ― имя компьютера, COMMAND ―– имя команды, а USERNAME ― имя пользователя, если оно нужно.



Смотрим содержимое диска С удаленного компьютера.

Если же нам нужно получить полноценную консоль ― не автоматизации ради, а ради управления конкретным компьютером, ― то можно использовать командлет Enter-PSSession.



Работаем в консоли удаленного компьютера.

Напомню, что с помощью JEA можно ограничить доступные подобной сессии командлеты или дать доступ нужным без прав администратора.

Конечно, кроме встроенных средств и небольших утилит, существует множество программ для управления структурой. Помимо взрослых решений, для управления конфигурациями вроде Chef, Ansible и MS SCCM можно использовать и средства мониторинга вроде Zabbix, и даже консоль управления антивирусом Касперского.

В период гетерогенных структур хорошо бы иметь возможность унифицированного управления Windows и Linux. Это можно сделать и с помощью PowerShell, что само по себе достойно отдельной статьи ― стоит такую сделать или уже лишнее?

Кстати, поделитесь вашими способами скрытого и не очень запуска программ на удаленных компьютерах. Ну, за исключением эксплойтов.

php-exe

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

Прежде чем приниматься за установку и настройку дополнительного ПО, следует детальнее изучить возможности PHP, быть может нужный функционал уже есть в языке или какой-либо библиотеке. Стоит обратиться к официальным источникам – сайту, форуму, возможно там найдется описание того, как сделать то или иное. Если же все-таки требуется специфичный функционал на PHP, тогда его наверняка можно сделать при помощи сторонних программ.

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

Итак, как запустить процесс обработки данных во внешней программе? Для начала необходимо подобрать нужную программу, установить ее и правильно настроить. Когда все готово, далее необходимо написать PHP-скрипт в Вашем проекте, который будет взаимодействовать с программой.

  • exec - выполняет внешнюю программу,
  • passthru - выполняет внешнюю программу и отображает необработанный вывод,
  • system - выполняет внешнюю программу и отображает вывод.

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

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

Какой функционал можно реализовать с помощью внешних программ? Это может быть все, что угодно. Например, обработка фотографий, создание документов, рендеринг видео и т.д. Словом все, что можно сделать при помощи ПК.

Загрузите свой exe через FTP

Прежде чем начать, вам нужно убедиться, что ваш хост вообще разрешает файлы .exe. Некоторые хостинг-сервисы не разрешают файлы определенного размера, а некоторые не позволяют иметь определенные типы файлов на вашем веб-сайте, включая файлы .exe. Убедитесь, что то, что вы собираетесь добавить на свой сайт, разрешено в первую очередь для вашего веб-хостинга. Вы не хотите, чтобы ваш сайт был закрыт из-за несоблюдения правил или для выполнения большой работы по подготовке к добавлению файла .exe на ваш сайт, чтобы выяснить, что вы не можете.

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

Загрузите ваши файлы .exe на ваш сайт, используя простую программу загрузки файлов, которую предоставляет ваш веб-хостинг. Если они не предоставляют, то вам нужно использовать программу FTP для загрузки вашего exe-файла на ваш сайт.

Где вы загрузили .exe файл? Вы добавили файл .exe в основную папку на своем веб-сайте или в другую папку? Или вы создали новую папку на вашем сайте только для файлов .exe? Найдите адрес файла .exe на вашем веб-сайте, чтобы вы могли ссылаться на него.

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

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

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

HTML-страница примера файла EXE

Тег HTML-ссылки позволяет настроить текст ссылки. Не будьте слишком креативны с этим, но также не используйте полный URL в качестве текста ссылки. Доберитесь до сути и дайте людям знать, что они получают. Ваш должен выглядеть примерно так, как показано ниже.

Результат выглядит примерно так, как на картинке ниже.

Когда дело доходит до размещения .exe на вашем сайте для загрузки, это так же просто, как хранить его в легкодоступном месте и ссылаться на него. Пока ваш хост позволяет, вы можете разместить столько файлов .exe, сколько захотите.

Читайте также: