¿Cómo puedo interceptar todos los eventos clave, incluidos ctrl + alt + del y ctrl + tab?

Estoy escribiendo una aplicación de protector de pantalla que necesita evitar que el usuario acceda al sistema sin escribir una contraseña. Quiero capturar / suprimir los diversos métodos que un usuario puede intentar salir de la aplicación, pero toda la investigación que hago parece apuntarme a “no se puede”.

Cualquier cosa en C # o C ++ sería genial. Pensé en desactivar el teclado, pero luego tendría otros problemas.

Para agregar a lo que dijo Shog9, si su aplicación pudiera interceptar ctrl + alt + del, entonces su aplicación podría pretender ser el diálogo de inicio de sesión de Windows, y al hacerlo engañar al usuario final para que escriba sus credenciales en su aplicación.

Si desea reemplazar el cuadro de diálogo de inicio de sesión de Windows, consulte Winlogon y GINA (pero esto dice: “Las DLL de GINA se ignoran en Windows Vista”, y no he escuchado qué es para Vista).

si alguien preguntara, no les diría que no pueden.

Más específicamente, su “software de aplicación” no puede: en su lugar, por diseño, solo el “software del sistema” puede hacer esto; y no es que no se te permita o no puedas escribir el software del sistema, pero tu OP parecía estar preguntando claramente cómo hacerlo sin escribir un software de sistema … y la respuesta a eso es que puedes ‘ t: porque el sistema está diseñado para evitar que una aplicación enganche estas combinaciones de teclas.

¿Puede darme instrucciones para escribir las cosas del sistema? De hecho, creo que esto sería mejor si fuera el nivel del sistema. Es para un OEM tan bueno en este punto. Además, si lo escribí a nivel de sistema, podría escribir una aplicación para controlarlo.

Un controlador de dispositivo de filtro de teclado o una DLL de GINA, por ejemplo, se consideraría software de sistema: instalado por un administrador (o OEM) y ejecutado como parte de O / S.

No sé sobre GINA más allá de su nombre; y ya he dado (arriba) un enlace en MSDN. Espero que sea el código de modo de usuario de Win32.

Los controladores de dispositivos son un tema diferente: por ejemplo, Introducción al desarrollo de controladores .

¿Hay alguna manera de reasignar el teclado para que la eliminación no esté donde estaba?

Todavía no estoy seguro de que usted y / o su jefe tengan la idea correcta. En mi humilde opinión, no debe ser una aplicación que evite que el usuario presione Ctrl-Alt-Del. Si desea evitar que el usuario acceda al sistema sin escribir una contraseña, entonces debe bloquear (proteger con contraseña) el sistema, como si el usuario hubiera presionado Ctrl Alt Supr y luego seleccionó “Bloquear esta computadora”. Para desbloquear la computadora, deberán presionar Ctrl Alt Del e ingresar sus credenciales en WinLogon.

Sin embargo, ignorando lo que deberías hacer y concentrándote en lo que eres capaz de hacer, si quieres interceptar el teclado, aparentemente se puede hacer. No he estudiado los teclados por mi cuenta, pero este post y este post afirman tener éxito al escribir un “Keyboard Filter Driver” (que es una especie de kernel-mode, no Win32, controlador de dispositivo). Sin embargo, si escribe uno de estos, es posible que reciba un retroceso, por ejemplo, como esta reacción de un MVP MVP , o esta reacción de un producto anti-snooping .

No puedes. El objective de Ctrl + Alt + Del es que solo el sistema puede manejarlo, porque de esa manera el sistema siempre puede manejarlo.

Afortunadamente, Windows tiene soporte integrado para protectores de pantalla con contraseña (disponible como la opción “Al reanudar, proteger con contraseña” en Propiedades de Pantalla, o por medio de la política de grupo). Solo usa eso.

No lo he probado, pero ¿qué pasa con el uso de SetWindowsHookEx ()

De la documentación de MSDN: WH_KEYBOARD_LL

Windows NT / 2000 / XP: instala un procedimiento de enlace que supervisa los eventos de entrada de teclado de bajo nivel. Para obtener más información, consulte el procedimiento de enlace LowLevelKeyboardProc.

Es posible interceptar crtl + alt + del, aunque obviamente Microsoft lo hizo muy difícil de hacer, porque entonces se podía abrir un diálogo de locking falso y registrar las contraseñas de las personas.

La respuesta es escribir un controlador de dispositivo. No puedo recordar si puedes usar un simple filtro de teclado antiguo, o si tienes que escribir un teclado ISR. De cualquier manera, es ciertamente posible, pero con mucho dolor si no tienes experiencia con el conductor.

Como este parece ser un buen lugar de recolección para la acumulación de varios medios con los que “interceptar” las tres teclas de control de pseudorrupción eliminar alt, aquí hay algo que encontré ayer que puede ser de utilidad.

http://cuinl.tripod.com/Tips/enablectrldel.htm

En mi opinión , cuando parece que la única opción práctica y oportuna es cortar la potencia (es decir, la extracción MECÁNICA de la batería de una computadora de mano android similar a la sobrecarga) para detener cualquier procesión o mal funcionamiento resulta bastante sólido y completo (o largo irresponsabilidad – parece que un linaje peligroso y frustrante continúa — y continúa empeorando.

Especialmente con la eliminación de cosas sensatas y sencillas, como los controles de volumen de los altavoces mecánicos. (seguro, voluminoso, más material, pero por supuesto, eso es justo, ¿qué bien para un individuo o ser es la conciencia infinita y perfecta sin un control o experiencia?)

Es un linaje de enfoques para diseñar el medio ambiente que es responsable de la capacidad de respuesta al usuario, parte de una interfaz tecnológica crítica y verdaderamente significativa. ( ¿Lo único?)

Digo poner algunos botones -direct-to-hardware-control– de nuevo en las cosas, al menos hasta que los aspectos de software de estas tecnologías se adapten completamente a las interfaces blandas artificiales, que tengo en cuenta en una contabilidad exhaustiva de todos los factores heurísticos aprovisionamientos.

Incluso en la mecánica del universo apuesto a que hay un práctico restablecimiento, restauración, suspensión, detención de la (s) función (es) para la seguridad y la viabilidad fundamental de la presencia de lo que constituiría como el diseñador de todo lo que sigue el misterio perpetuo iniciador de existencia: CONCIENCIA INTELIGENTE y VOLUNTAD.

Podrías lograr eso en XP y antes, pero con Vista ya no.

Intente investigar si puede escribir una aplicación que se inicie a sí misma como salvapantallas protegido con contraseña.

Los protectores de pantalla pueden hacer mucho más que solo mostrar imágenes bonitas. He visto protectores de pantalla interactivos antes que usaron el mouse y el teclado para proporcionar un juego simple, aunque no recuerdo qué versión de Windows vi ejecutarse … Bien podría han sido Windows 95. (En cuyo caso todas las apuestas están desactivadas).

¿Qué hay de interceptar presionar teclas Ctrl y Alt mientras el progtwig se está ejecutando, y cancelar las pulsaciones de tecla?

No sé qué tan bien funcionaría esto, si es que lo veo en Vista, pero vale la pena intentarlo.

Recuerdo haber hecho algo como esto alrededor del año 2001, así que probablemente estaba funcionando en 98. Ha pasado demasiado tiempo desde que intenté meterme con algo como bloquear el comando ctrl-alt-del.

Ok … No voy a publicar el código aquí, pero el tirón es esto

crear un gancho de teclado cuando el usuario presiona ctrl || alt || elimine set bools en true … si presionan algo más, configúrelos en false.

switch (p_key) { default: Clear(); break; case Keys.LMenu: altHit = true; break; case Keys.RMenu: altHit = true; break; case Keys.LControlKey: ctrlHit = true; break; case Keys.RControlKey: ctrlHit = true; break; case Keys.Delete: delHit = true; break; 

cuando la pantalla tiene foco, se lo pierde al administrador de tareas, cierre la cosa sangrienta. La pantalla parpadea tan rápido que el usuario nunca la nota. Y puedo hacer lo que quiera.

Admitiré que esto es un error, pero da como resultado el efecto deseado. (OH desearía no tener que hacer esto)

“Process Explorer” de Mark Russinovich (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) lo hace, y lo había estado haciendo antes de que Microsoft comprara Sysinternals.

Este artículo de 2002 actualizado en 2006 explica una forma de hacerlo sin escribir un controlador de teclado. http://www.codeproject.com/KB/system/preventclose.aspx?msg=1666328

Todavía puede interceptar Ctrl + Alt + Supr en Windows 7.

Esta es la forma en que Process Explorer lo hace:

http://mygreenpaste.blogspot.com/2005/07/image-file-execution-options-good-evil.html