Re[2]: Service, Winlogon и диалоговые окна
От: Adm  
Дата: 17.08.06 08:16
Оценка:
Здравствуйте, Demon, Вы писали:

D>Здравствуйте, Adm, Вы писали:


Adm>>Необходимо выводить из сервиса диалоговые окна на видимый в данный момент десктоп, в том числе — на Winlogon. Поиск по многочисленным форумам не дал результатов. Сталкивался с мнением о том, что это вообще невозможно. Тем не менее, существует программка Outpost Firewall, которая каждый день демонстрирует обратное. Скриншот прилагается. (Более того, при переключении десктопов окно красиво переходит на ставший видимым в данный момент десктоп.) Мне же на десктоп Winlogon удается вывести только MessageBox, а это меня не устраивает. Быть может, кто-то знает, как решить проблему и поделится мыслями по этому поводу?


D>Ну выводить окна вместе с окнами винлогона не проблема. Просто делаешь SetThreadDesktop и творишь с окнами чего душа пожелает.

D>А вот переносить окно с одного десктопа на другой вроде не положено. Тут либо хакерством нужно заниматься, либо просто схитрить. Можно, например, на всех доступных десктопах создать окно, отлавливать пользовательские манипуляции на активном десктопе и эмулировать их на всех остальных.

Спасибо. Получается выводить окно на видимый десктоп из Thread. Хотелось бы вывести на Winlogon диалог, который откомпилирован как exe. При создании формы наблюдается следующая ситуация: если сервис неинтерактивный, OpenInputDesktop возвращает ошибку 1(Неверная функция), в случае интерактивного сервиса OpenInputDesktop проходит нормально, но SetThreadDesktop возвращает ошибку 170(Требуемый ресурс занят). Процесс запускается функцией CreateProcessAsUser с токеном сервисного процесса.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.