Могут ли пользователи взаимодействовать со службами непосредственно в Microsoft Vista?

С веб-сайта Microsoft (см. msdn.microsoft.com/en -us / library / ms683502 (VS.85) .aspx) четко сказано: «Службы не могут напрямую взаимодействовать с пользователем с Windows Vista».

Поэтому я решил проверить это с помощью «psexec -s cmd.exe». Насколько мне известно, «psexec» создает службу для открытия командной строки. Излишне говорить, что это сработало. Затем я решил использовать "EnumWinSta GUI" в сочетании с psexec, чтобы переключиться на рабочий стол winlogon. К моему удивлению, я даже смог запустить «cmd.exe» на этом рабочем столе. Означает ли это, что новый процесс, созданный из службы, может быть интерактивным?

Или это потому, что psexec творит какую-то черную магию? Если да, то как это сделать?

Я пытаюсь отобразить полноэкранное окно из службы в объект рабочего стола winlogon как в Vista, так и в XP.


person Community    schedule 20.05.2009    source источник
comment
Почему вы хотите закрыть рабочий стол winlogon полноэкранным окном? Похоже, вредоносное ПО пытается подделать пользовательский интерфейс входа в систему.   -  person Michael    schedule 21.05.2009
comment
Это для аварийных уведомлений, например, о пожаре в здании ...   -  person    schedule 21.05.2009


Ответы (1)


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

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

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

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

person Michael    schedule 20.05.2009
comment
Как получить токен пользователя интерактивного сеанса? - person ; 21.05.2009