Вниз
Скачать: 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
3-1242073212
goooodwin
2009-05-12 00:20
2010.08.27
Помогите пожалуйста, ошибка вылазиет


15-1274119662
Masolin_gazin
2010-05-17 22:07
2010.08.27
Как удалить сообщения программы?


2-1275290377
user51
2010-05-31 11:19
2010.08.27
как в DLL организовать таймер, или вывернутся другим способом


15-1266565974
balepa
2010-02-19 10:52
2010.08.27
C#. Объявление типов


2-1273755318
_guest_
2010-05-13 16:55
2010.08.27
впечатать содержимое RichEdit в произвольное место листа




   Наверх