Проблема с Хуками

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Интересный факт.
Глобальные хуки (в моем случае WH_SHELL) действуют только на приложения, запущенные под тем пользователем, под которым устанавливался хук.

Как, и возможно ли, установить хук на создание окна, чтобы он отрабатывал всегда, даже если окно создается под именем другого пользователя?
С уважением, Lost Angel...
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Черт его знает. Может перенесем это в WinAPI?
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Не против :)
С уважением, Lost Angel...
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

Была такая проблема у меня под NT, но вылечилась установкой под локальным администратором.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

А если под простым юзером?

Нужно для чит-клиента под WoW.
С уважением, Lost Angel...
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

А тогда можно всё равно сервис под администратором запустить. Я прогу в сервис из-за этого переделывал.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Проблема, действительно, с правами доступа к объекту "рабочий стол" (desktop). По умолчанию у непривилегированного пользователя нет прав на установку хуков (любых), у служб такое право есть.

Запустить клиента как службу - ну, не знаю... Не слишком ли жирно? :) Можно поковыряться с impersonation: получить маркер админа, доступ к объектам window station и desktop, задать требуемые права (в ч-ти, DESKTOP_HOOKCONTROL), навесить хук, ну и вернуться к обычному юзеру. Сложно, согласен - но интересно ;)
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Пока проблемма решилась периодическим enum'ом всех процессов и окон в системе. На это, почему-то права сохраняюся даже и у непривилегированного пользователя ;)
Вот только этот метод требует сравнительно больших затрат процессорного времени :(
Может быть есть возможность отследить запуск процессов каким-либо "нетрадиционым" методом?
С уважением, Lost Angel...
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Может и есть, я не знаю. Все известные мне методы сводятся или к перехвату системных вызовов (и самый известный способ как раз использует для этого global hooks, см. Рихтер, гл.22), или то, что ты сделал - периодический опрос. IMHO, нормальное решение, если не требуется уж очень быстрая реакция на событие. Тем более, что интервалом ты можешь управлять.
AlexDav
Сообщения: 34
Зарегистрирован: 18 окт 2005, 15:37

Посмотри очень интересно http://www.wasm.ru/article.php?article=hiddndt правда не знаю поможет ли тебе :)
Ответить