Добое время суток Занемаюсь портирование одной программ на Windows Vista сталкнулся с проблемой я выполняю SetWindowsHookEx на события WH_CBT использую DLL для загрузки во все процессы, но хук не выполняеться. Может кто то сталкивался и как с этим бороться в Vist-e? Приложение выполняеться в контексте пользователя не сервиса, так как в Vist-е сервисы находяться в изолированой среде. Так же к выполняемаму приложению подключен манифест об использовании привелегий администратора.
А ты посмотрел, загрузилась ли ДЛЛ в процессы? Что возвращает SetWindowsHookEx? Кде код, в конце концов? Я что-то упустил, видать. Откуда такое в манифесте?
GetLastError() - возвращает что все нормально. SetWindowsHookEx вернуло все как пологаеться, то что ей надо вернуть. DLL загрузилась в процес который устанавливает SetWindowsHookEx... но в остальные процессы она на загружаеться вот основная проблема... Вот код загрущика. Я сдела тестовое приложение на котором тестил все это Код (Text): HINSTANCE hDll = NULL; HHOOK hHook = NULL; GetCurrentDirectory(MAX_PATH,ecDllName); hDll = LoadLibrary(TEXT("C:\\Interceptor_test.dll")); if(hDll != NULL){ HOOKPROC HookFunction = (HOOKPROC)GetProcAddress(hDll,"HookFunction"); if(HookFunction != NULL){ hHook = SetWindowsHookEx( WH_CBT, HookFunction, hDll, 0 ); LPVOID lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf, 0, NULL ); MessageBox( NULL, (LPCWSTR)lpMsgBuf, TEXT("GetLastError"), MB_OK|MB_ICONINFORMATION ); } } В dll функция перехватчика: Код (Text): DLLExport LRESULT CALLBACK HookFunction(int nCode, WPARAM wParam, LPARAM lParam) { _TRACE("Hook work"); return CallNextHookEx(0,nCode ,wParam,lParam); } Вот манифест который я использую что выполнить поднятие прав для запуска программы: Код (Text): <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> Есть какието соображения на этот счет?
поиск по requireAdministrator под вистой актуально, раньше не юзал 2MaximusPrime >> а на счет хуков, обратите внимание на integrityLevel процессов, ставя хуки из приложения с Medium, они не расставятся в приложениях с высшим уровнем. ну и вопще про уак почитайте
Спасибо порую в этом на правлении... хотя для теситрования я запускаю Internet Expoer который вобще имеет самый ниский уровень привелегий... и DLL не цепляеться даже к ниму... Виста-бливис... уже в печенке сидит...