2009-10-01 11 views
5

Tengo un DLL de gancho de teclado para todo el sistema que he creado y que ha funcionado con éxito durante años en Windows XP.Gancho del teclado del sistema en Vista y más tarde

Sin embargo, parece que en ciertas versiones posteriores de Windows (Vista Home Premium y Windows 7, por nombrar un par), el enganche o bien no funciona en absoluto, o simplemente funciona localmente dentro de la aplicación que instaló eso.

Lo he sugerido en un par de lugares en Internet para cambiar el WH-KEYBOARD a WH-KEYBOARD-LL en la llamada a SetWindowsHookEx, pero esto no parece ayudar cuando lo probé. ¿Hay algo más que deba cambiar además de cambiar el tipo de gancho a WH-KEYBOARD-LL?

(PS: tuviera que definir WH-Teclado-LL de 13 años, ya que no se define en Delphi Estoy asumiendo que esto es exacto..)

+0

De acuerdo con http://pinvoke.net/default.aspx/Enums/HookType.html, sí, 'WH_KEYBOARD_LL' es 13. –

Respuesta

8

Asegúrese de que el proceso de alojamiento del gancho es al mismo nivel de privilegio de la aplicación que intenta conectar. El teclado y otros enganches representan un alto riesgo de seguridad, por lo que Vista y versiones posteriores se cambiaron para permitir solo enganches en todo el sistema en procesos dentro de un contexto de seguridad común. En otras palabras, si inicia el proceso de host hook con derechos de usuario, solo enlazará procesos que estén en el mismo nivel de privilegio. Si lo piensas bien, tiene sentido porque no quieres que un proceso a nivel de usuario pueda inyectar código en un proceso de nivel de administrador. Eso es malo en muchos niveles.

Cuestiones relacionadas