Конференция "WinAPI" » Установка ловушек в Vista
 
  • snake (24.12.08 23:54) [0]
    ПРивет всем.
    Столкнулся с проблемой работы ловушек под Вистой( у мя 64 разрядная). Цель поставить ловушку на часы в трэее ("TrayClockWClass"). Процедура ловушки и код установки этой ловушки нахоидтся в DLL. Тестовая программа вызывает экспортную ф-ию DLL в которой происходит регистрация ловушки. Код работает под ХР, но под Вистой увы нет ;(
    Нарыл инфы что у висты поменялся механизм взаимодействия процессов с разными привелегиями http://msdn.microsoft.com/en-us/library/ms742884.aspx. Т.е. для работы нужно запустить процесс( ЕХЕ файл) с привелегиями Администратора и второе в запускаемый процес (не понятно ЕХЕ или DLL) нужно добавить специльный манифест файл. Вот пробовал делать, но все тчетно :( У кого какой есть опыт в этом деле помогите.
  • Eraser © (25.12.08 01:24) [1]
    > Т.е. для работы нужно запустить процесс( ЕХЕ файл) с привелегиями
    > Администратора и второе в запускаемый процес (не понятно
    > ЕХЕ или DLL) нужно добавить специльный манифест файл.

    ну и как, манифест срабатывает или нет?
  • snake (25.12.08 10:52) [2]
    неа :(
  • Rouse_ © (25.12.08 11:02) [3]
    Достаточно просто запустить с привилегиями администратора. А манифест нужен для того, чтобы запуск с такими привилегиями, был автоматом без лишних телодвижений, добавлять сам манифест естественно необходимо в свое приложение.
  • snake (25.12.08 11:14) [4]
    пробовал запускать с привилегиями, но процедура ловушки не получает никаких сообщений. Хотя идентификатор HHOOK имеет значение больше нуля
  • Eraser © (25.12.08 16:27) [5]
    > [4] snake   (25.12.08 11:14)

    SetWindowsHookEx can be used to inject a DLL into another process. A 32-bit DLL cannot be injected into a 64-bit process, and a 64-bit DLL cannot be injected into a 32-bit process. If an application requires the use of hooks in other processes, it is required that a 32-bit application call SetWindowsHookEx to inject a 32-bit DLL into 32-bit processes, and a 64-bit application call SetWindowsHookEx to inject a 64-bit DLL into 64-bit processes. The 32-bit and 64-bit DLLs must have different names.


    http://msdn.microsoft.com/en-us/library/ms644990.aspx
  • snake (25.12.08 17:46) [6]
    Спасибо. Действительно это изза 64 версии. На 32битной заработало
 
Конференция "WinAPI" » Установка ловушек в Vista
Есть новые Нет новых   [134435   +36][b:0][p:0.001]