2011-04-23 15 views
6

¿Hay alguna manera, sin usar inyección DLL, servicios y demás, para desbloquear la computadora local usando .net? El nombre de usuario y la contraseña de Windows están disponibles para mi programa.Desbloquee la computadora local usando .net

+0

Como VNC puede hacerlo, esperaría que después de ver las fuentes de VNC pueda imitar su comportamiento con algunas llamadas pinvoke. –

Respuesta

5

Creo que no hay una función .NET que pueda usar para desbloquear su computadora y no hay una forma breve de lograrlo. Pero, hay una manera.

Debe implementar su componente personalizado ICredentialProvider, engancharlo en el mecanismo de autenticación de Windows e implementar la comunicación entre este y su aplicación.

El mecanismo de autenticación de Windows 7 consta de dos partes. Ellos son WinLogon y LogonUI. LogonUI es responsable de mostrar una ventana de inicio de sesión y una notificación de WinLogon sobre las acciones de los usuarios. Winlogon reacciona ante los eventos de LogonUI y realiza las acciones necesarias para iniciar sesión en los usuarios, desconectar usuarios, bloquear sesiones y desbloquear sesiones.

Microsoft proporciona un mecanismo para enganchar un comportamiento personalizado en LogonUI. Para hacer esto, necesita crear un objeto COM que implemente ICredentialProvider y registrarlo en un sistema. Su componente puede decirle a LogonUI que le indique a WinLogon que desbloquee una sesión.

Estos son algunos ejemplos par de cómo construir los proveedores de encargo de credenciales: How to Build Custom Logon UI’s in Windows Vista, Create Custom Login Experiences With Credential Providers For Windows Vista

Este mecanismo funcionará para Windows Vista y Windows 7. Es necesario utilizar un mecanismo similar denominado GINA si se quiere lograr el mismo resultado para Windows XP. Aquí puede leer más sobre GINA: Winlogon and GINA

Hubo un truco que se podía "desbloquear" una sesión en Windows XP.

WinLogon en Windows XP creó un escritorio adicional y lo conectó cuando el usuario eligió bloquear una sesión. Fue posible volver a un escritorio "normal" usando la API de Windows. Todo funcionó bien, excepto WinLogon, aunque el sistema está bloqueado y no reaccionó para Ctrl-Alt-Del. Creo que no funcionará para Windows Vista y 7. Pero podría intentarlo. Puede ser simple que implementar un proveedor de credenciales personalizado.

Aquí es un ejemplo de cómo hacerlo: Remotely Unlock a Windows Workstation

espero que esto respondió a su pregunta.

+0

Sí, aquí hay información adicional que podría ayudar http://stackoverflow.com/a/35173886/1895684 –

1

No, no, al menos no dentro del contexto especificado en su pregunta. Pero tengo que preguntar: ¿por qué quieres desbloquearlo? Si necesita una aplicación para ejecutar, la máquina no tiene que estar desbloqueada para que eso suceda.

+2

Estoy tratando de usar mi teléfono y Bluetooth para bloquear la pantalla cuando me alejo, y la desbloqueo cuando regrese. – Soumya

+1

Usando una conexión BlueTooth que se cae/restablece para (des) bloquear un sistema. Suena seguro ... –

Cuestiones relacionadas