Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.048 c
15-1272820362
s_t_d
2010-05-02 21:12
2010.08.27
PostgreSQL. Книги для начального изучения.


2-1270538489
istok
2010-04-06 11:21
2010.08.27
TTimer в Delphi2010


15-1268122113
AlexDan
2010-03-09 11:08
2010.08.27
Условие для radio /php/..


2-1272016997
SSD
2010-04-23 14:03
2010.08.27
Как зделать чтобы при входе в программу запршивал логин и пароль


2-1270531127
Knob
2010-04-06 09:18
2010.08.27
Проблема с ActiveX




   Наверх