PSExec для открытия интерактивной программы без входа пользователя в систему

PSExec для открытия интерактивной программы без входа пользователя в систему

Я использую PSExec для открытия определенной серверной программы, которая имеет небольшой gui, на другом компьютере. И локальная, и целевая — Win7 64bit. Я открываю ее с помощью

psexec \myothercomputer -u Me -p mypass -i -d -h myapp.exe

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

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

Затем я вошел в систему этого компьютера и, к моему удивлению, увидел своего рода графическую «тень», то есть форму приложения, которое я пытался запустить! Как будто оно открылось, хотя я не был в системе.

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

Вопросы: Почему PSExec успешно открывает интерактивное приложение без входа в систему? Почему же тогда мое интерактивное приложение не работает должным образом?

решение1

в соответствии сPSExecстраница, ключ -i [session] делает следующее:

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

В вашей команде вы не указываете сеанс сразу после -i, как указано в man-страницах.

Я также заметил, что вы указали -d. Я не думаю, что вы можете смешивать -i и -d, особенно если пользователь не вошел в систему, потому что -i работает в сеансе консоли, но -d говорит не использовать сеанс консоли для определения времени жизни процесса:

-d Не ждать завершения процесса (неинтерактивно).

Связанный контент