Проблема с Хуками
Модераторы: Duncon, Hawk, Romeo, Eugie
Интересный факт.
Глобальные хуки (в моем случае WH_SHELL) действуют только на приложения, запущенные под тем пользователем, под которым устанавливался хук.
Как, и возможно ли, установить хук на создание окна, чтобы он отрабатывал всегда, даже если окно создается под именем другого пользователя?
Глобальные хуки (в моем случае WH_SHELL) действуют только на приложения, запущенные под тем пользователем, под которым устанавливался хук.
Как, и возможно ли, установить хук на создание окна, чтобы он отрабатывал всегда, даже если окно создается под именем другого пользователя?
С уважением, Lost Angel...
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Черт его знает. Может перенесем это в WinAPI?
Не против 

С уважением, Lost Angel...
-
- Сообщения: 497
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
Была такая проблема у меня под NT, но вылечилась установкой под локальным администратором.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
А если под простым юзером?
Нужно для чит-клиента под WoW.
Нужно для чит-клиента под WoW.
С уважением, Lost Angel...
-
- Сообщения: 497
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
А тогда можно всё равно сервис под администратором запустить. Я прогу в сервис из-за этого переделывал.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
Проблема, действительно, с правами доступа к объекту "рабочий стол" (desktop). По умолчанию у непривилегированного пользователя нет прав на установку хуков (любых), у служб такое право есть.
Запустить клиента как службу - ну, не знаю... Не слишком ли жирно?
Можно поковыряться с impersonation: получить маркер админа, доступ к объектам window station и desktop, задать требуемые права (в ч-ти, DESKTOP_HOOKCONTROL), навесить хук, ну и вернуться к обычному юзеру. Сложно, согласен - но интересно 
Запустить клиента как службу - ну, не знаю... Не слишком ли жирно?


Пока проблемма решилась периодическим enum'ом всех процессов и окон в системе. На это, почему-то права сохраняюся даже и у непривилегированного пользователя
Вот только этот метод требует сравнительно больших затрат процессорного времени
Может быть есть возможность отследить запуск процессов каким-либо "нетрадиционым" методом?

Вот только этот метод требует сравнительно больших затрат процессорного времени

Может быть есть возможность отследить запуск процессов каким-либо "нетрадиционым" методом?
С уважением, Lost Angel...
Может и есть, я не знаю. Все известные мне методы сводятся или к перехвату системных вызовов (и самый известный способ как раз использует для этого global hooks, см. Рихтер, гл.22), или то, что ты сделал - периодический опрос. IMHO, нормальное решение, если не требуется уж очень быстрая реакция на событие. Тем более, что интервалом ты можешь управлять.
Посмотри очень интересно http://www.wasm.ru/article.php?article=hiddndt правда не знаю поможет ли тебе 
