2009-10-01 9 views
5

Mam systemową bibliotekę DLL przechwytującą klawiaturę, którą utworzyłem, działającą z powodzeniem od lat w systemie Windows XP.Systemowy hak na klawiaturze w systemie Vista i nowszy

Wygląda jednak na to, że w niektórych nowszych wersjach systemu Windows (Vista Home Premium i Windows 7, aby wymienić parę), hak w ogóle nie działa lub po prostu działa tylko lokalnie w aplikacji, która została zainstalowana to.

Widziałem, jak to było w kilku miejscach w Internecie, aby zmienić WH-KEYBOARD na WH-KEYBOARD-LL w wywołaniu SetWindowsHookEx, ale nie wydaje się to pomocne, gdy próbowałem. Czy muszę zmienić coś innego niż zmienić typ haka na WH-KEYBOARD-LL?

(PS: Miałem do zdefiniowania WH-Klawiatura-LL jako 13, ponieważ nie określono w Delphi Jestem przy założeniu jest to dokładne.).

+0

Według http://pinvoke.net/default.aspx/Enums/HookType.html, tak, "WH_KEYBOARD_LL" ma wartość 13. –

Odpowiedz

8

Upewnij się, że proces gospodarzem haczyk jest taki sam poziom uprawnień aplikacji, którą zamierzasz podłączyć. Klawiatura i inne haki są bardzo niebezpieczne, więc Vista i później zostały zmienione tak, aby zezwalały tylko na systemowe haki w procesach we wspólnym pewnym kontekście zabezpieczeń. Innymi słowy, jeśli rozpoczniesz proces haka hosta z uprawnieniami użytkownika, zostanie on zahaczony tylko o procesy, które są na tym samym poziomie uprawnień. Jeśli o tym pomyślisz, ma to sens, ponieważ nie chcesz, aby proces na poziomie użytkownika był w stanie wprowadzić kod do procesu na poziomie administratora. To źle na tylu poziomach.

Powiązane problemy