windows — CMD запускается и PSExec открывает интерактивное приложение на переднем плане при использовании PHP для подключения к SSH

Я запускаю следующее через удаленный скрипт PHP, который подключается к SSH:

cmd /C start "" /MAX /b "C:\Windows\System32\notepad.exe"

Процесс запускается, однако он остается в фоновом режиме и не открывается полностью на удаленном рабочем столе. Есть ли способ заставить его работать в интерактивном режиме (например, как у PSExec есть флаг -i)?

Редактировать:

Таким образом, PHP подключается к SSH с ssh2_connect затем использует ssh2_exec следующим образом:

        if (!($stream = ssh2_exec($con, $shcom ))) {

где $shcom команда передается в SSH, например:

    $shcom = 'cmd.exe /C start "" /MAX "%SystemRoot%\System32\calc.exe"';

Ранее я использовал PSExec и PuTTY (обратите внимание, не с помощью сценария PHP), чтобы вручную открыть notepad.exe на удаленном компьютере с помощью следующего:

cd "C:\Program Files\PSExec\" & psexec \\localhost -i 2 -ds "C:\Windows\System32\notepad.exe"

который успешно работал, однако это также не работает должным образом через PHP. В настоящее время ни CMD, ни PSExec не могут вывести интерактивное приложение на первый план. автоматически.

5

Решение

Откройте окно командной строки и запустите сначала cmd /? и второй start /? и прочитайте оба раза вывод справки.

cmd /C запускает новый командный процесс Windows, который автоматически закрывается из-за /C когда дополнительно примененная команда для выполнения в командном процессе прекращается.

Команда start "" /MAX /B запускает еще один командный процесс с пустой строкой в ​​качестве заголовка окна и запускает в этом командном процессе приложение с графическим интерфейсом Блокнот Windows который должен быть запущен с развернутым окном из-за /MAX но который должен работать в фоновом режиме (= без видимого окна) из-за /b,

Так что ошибка заключается в использовании /b как действительно хотел, начинается Блокнот на переднем плане с развернутым окном вместо фона без окна.

И Windows не должна быть неизбежно установлена ​​на диске C: в каталоге с именем Windows, Поэтому лучше использовать одну из этих двух команд:

cmd.exe /C start "" /MAX "%SystemRoot%\System32\notepad.exe"cmd.exe /C start "" /MAX "%windir%\System32\notepad.exe"

Переменная среды windir переменная среды, существующая по умолчанию начиная с Windows 95, с указанием пути к каталогу под управлением Windows.

Переменная среды SystemRoot переменная среды, предопределенная всеми версиями Windows на основе Windows NT с путем к каталогу Windows.

В наше время лучше использовать SystemRoot поскольку эта переменная окружения является встроенной в Windows, в то время как windir просто предопределено в списке системных переменных среды и поэтому может быть удалено.

Смотрите статью в Википедии о Переменные среды Windows для списка предопределенных переменных среды с описанием.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]