Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Хуки и PostMessage в Vista   Найти похожие ветки 

 
Denied   (2009-02-28 14:01) [0]

День добрый.
Столкнулся с такой проблемой:
Приложение устанавливает хук, dll результаты работы передает в основную программу с помощью PostMessage.
И все было бы хорошо, если бы это работало в Vista...

Проблема №1: если программа, устанавливающая хук, запущена с правами обычного пользователя, то хук не устанавливается в приложения, запущенные "от администратора" (UAC включен). Запустить ее от админа проблем не составляет, но тогда в ход идет проблема №2.

Проблема №2:
Запущенная с правами администратора программа имеет TokenIntegrityLevel = High или System. Это с одной стороны решает проблему №1 - хук внедряется во все приложения на текущем десктопе, но создает следующее препятствие - Microsoft Windows Vista and later. Message posting is subject to User Interface Privilege Isolation (UIPI). The thread of a process can post messages only to message queues of threads in processes of lesser or equal integrity level..

Таким образом, если хук перехватил данные в приложении, запущенном от обычного пользователя(IntegrityLevel=Medium), то в установившую хук программу (IntegrityLevel=High) сообщение не будет отправлено.
Если сделать устанавливающей хук программе IntegrityLevel=Medium или Low, теряется возможность внедрения хука в приложения, запущенные от администратора.

Собственно, вопрос - что можно использовать вместо PostMessage/PostThreadMessage, с учетом необходимости только односторонней связи и малого количества (по объему за 1 передачу) передаваемой информации?


 
Eraser ©   (2009-03-01 01:16) [1]

> [0] Denied   (28.02.09 14:01)

два варианта рещение:
либо 2 хука. либо какой-то другой IPC, например Named Pipes.


 
имя   (2009-03-01 02:19) [2]

Удалено модератором


 
Denied   (2009-03-01 16:54) [3]


> Eraser ©   (01.03.09 01:16) [1]

Устанавливать 2 хука - я так понимаю, что нужно иметь 2 процесса с разным integrityLevel? Вариант, конечно, но слишком сложно получается - в результате нужно будет еще состыковывать и эти 2 процесса :)

> либо какой-то другой IPC
Вот!!! Спасибо огромное!!! Совсем забыл, что кроме сообщений и сокетов есть еще куча способов взаимодействия.
Вопрос только в том, что именно использовать, с учетом того, что обо всем этом я только слышал. Вообще - склоняюсь именно к NamedPipes.
а кошерно ли будет обрабатываться множество соединений из хука с основным приложением, и есть какие-нибудь общие грабли при их использовании (например, с теми же правами доступа)...
Что можно почитать примерное (в смысле - с хорошими примерами, кроме MSDN) ?


 
Eraser ©   (2009-03-01 17:19) [4]

> [3] Denied   (01.03.09 16:54)


> Вообще - склоняюсь именно к NamedPipes.

я бы тоже выбрал этот вариант. просто и быстро. если все грамотно реализовать (что не сложно), то граблей не замечено.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.1 c
15-1275596979
Юрий
2010-06-04 00:29
2010.08.27
С днем рождения ! 4 июня 2010 пятница


2-1268305355
fford
2010-03-11 14:02
2010.08.27
копировать текст из RichEdit в поток


2-1269838242
tippa
2010-03-29 08:50
2010.08.27
а чего он пищит?


15-1265372241
Alien1769
2010-02-05 15:17
2010.08.27
Задачка на логику


2-1273682768
ArtMoniac
2010-05-12 20:46
2010.08.27
Network Multimedia. класс не найден