Windows использует сеансы для отображения приложений с графическим интерфейсом для пользователей. Ваш ssh-сервер, вероятно, является службой Windows, запущенной пользователем SYSTEM в сеансе 0, который не имеет графического отображения. Таким образом, вы не увидите GUI приложений, которые вы запускаете.
Вы можете проверить это с помощью Sysinternals Process Explorer . После его запуска (от имени администратора) щелкните правой кнопкой мыши панель столбцов, нажмите «выбрать столбцы» и добавьте «Сеанс», «Доступ к пользовательскому интерфейсу», «Имя пользователя» и «Уровень целостности». Эта информация покажет вам для каждого процесса, в каком контексте это приложение выполняется («Сеанс»), показывает ли оно окно («Доступ к пользовательскому интерфейсу»), под какой учетной записью выполняется («Имя пользователя») и с какими разрешениями ( «Уровень целостности», высокий означает как администратор ).
Теперь, если вы хотите выполнить приложение с SSH - сервера в сеансе пользователя, вы можете сделать это с другой утилитой Sysinternals, которая называется PsExec : psexec -i <session number> -accepteula <application to execute>
. Если вы хотите, чтобы процесс запускался с вашим обычным пользователем, вы также можете использовать этот параметр, -u
и при желании вы можете лишить права доступа -l
. Проверьте справку работает psexec -?
.
Чтобы узнать номер вашей сессии, вы также можете запустить команду qwinsta
. Таким образом, вам не нужно приложение GUI Process Explorer.
Например, чтобы запустить калькулятор, выполните следующее: В сеансе ssh запустите qwinsta
, что должно дать вам что-то похожее на это:
C:\>qwinsta SESSIONNAME USERNAME ID STATE TYPE DEVICE services 0 Disc console john.doe 1 Active
Итак, ваша сессия, которую вы хотели бы использовать, 1
в этом примере (она может отличаться для вас). Затем выполните psexec -i 1 -accepteula calc.exe
. Теперь калькулятор должен появиться на вашем рабочем столе. ( -accepteula
Абсолютно необходимо при первом запуске приложения. Без этого приложение покажет вам лицензионное соглашение в окне графического интерфейса пользователя, которое, разумеется, не будет отображаться по указанным выше причинам. При последующих вызовах Вы можете игнорировать этот параметр, так как после принятия окно GUI больше не будет отображаться)
Если вы добавите к своей autohotkey.exe
команде префикс, psexec
как описано выше, я ожидаю, что скрипт будет работать, но я не могу проверить это сам, так как я не знаю это приложение.