bloquear completamente el uso del escritorio

06/06/2008 - 16:44 por Rick | Informe spam
Que tal lista, se me ha pedido desarrollar un software para controlar un
café internet, me han pedido la funcionalidad (la he visto en alguna
ocasión) de que la pantalla sea bloqueada completamente y pida un login y
pwd, y en base a eso permitir el uso de la pc por X tiempo, no se si bastara
con alguna forma tamaño pantalla sin bordes y que esté siempre por encima
del escritorio, pero creo que habria tambien que bloquear las combinaciones
de teclas como ctrl + esc, o cosillas asi, alguien ya ha hecho algo similar?

Saludos Cordiales!!

e-Ricc
 

Leer las respuestas

#1 mimeks fipa
21/08/2008 - 06:18 | Informe spam
Buen dia bro...

He hecho un programa similar en csharp (un reloj checador) la idea de bloquear el manejo del escritorio de windows me parece poco probable debido a que es un recurso con mayor prioridad que cualquier programa de .NET, yo lo resolví desactivando en el registro todo aquello que me diera problemas; regedit, taskman, teclas de ctrl, teclas de windows... te dejo una liga que te puede ser util (practicamente puedes desactivar cualquier tecla!);

http://www.microsoft.com/whdc/archi...n-map.mspx

un fragmento de mi código en csharp...

using System;
using Microsoft.Win32;
using System.Windows.Forms;

/*
* Creado por SharpDevelop.
* Usuario: mimeks
* Fecha: 07/04/2008
* Hora: 07:45 p.m.
*
*
*/

using System;
using Microsoft.Win32;
using System.Windows.Forms;

namespace WinReg
{
/// <summary>
/// Clase para modificar el registro de windows
/// </summary>
public static class Registro{
public static void ActivarPoliticasDeSeguridad(){
try{
RegistryKey policies = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
policies.SetValue("disabletaskmgr", 1);
policies.SetValue("DisableRegistryTools", 1);
policies.Close();
RegistryKey run = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
string user = Environment.GetEnvironmentVariable("USERPROFILE");
run.SetValue("WCH", user + @"\wch.exe");
run.Close();
RegistryKey control = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Keyboard Layout", true);
control.SetValue("Scancode Map",
new byte[] {00,00,00,00,00,00,00,00,05,00,00,00,00,00,0x1D,00,00,00,0x1D,0xE0,00,00,0x5B,0xE0,00,00,0x5C,0xE0,00,00,00,00},
RegistryValueKind.Binary);
control.Close();
MessageBox.Show("Reinicie el equipo para que los cambios hagan efecto...", "Alerta");
// RegistryKey explorer = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", true);
// explorer.SetValue("NoWinKeys", 1);
// explorer.SetValue("NoClose", 1);
// explorer.SetValue("NoRun", 1);
// explorer.SetValue("NoLogoff", 1);
// explorer.SetValue("StartMenuLogoff", 1);
// explorer.Close();
// RegistryKey desktop = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
// desktop.SetValue("Coolswitch", 0);
// desktop.Close();
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}
}
public static void DesactivarPoliticasDeSeguridad(){
try{
RegistryKey policies = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
policies.DeleteValue("disabletaskmgr");
policies.DeleteValue("DisableRegistryTools");
policies.Close();
RegistryKey run = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
run.DeleteValue("WCH");
run.Close();
RegistryKey control = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Keyboard Layout", true);
control.DeleteValue("Scancode Map");
control.Close();
MessageBox.Show("Reinicie el equipo para que los cambios hagan efecto...", "Alerta");
// RegistryKey explorer = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", true);
// explorer.DeleteValue("NoClose");
// explorer.DeleteValue("NoRun");
// explorer.DeleteValue("NoLogoff");
// explorer.DeleteValue("StartMenuLogoff");
// explorer.DeleteValue("NoWinKeys");
// explorer.Close();
// RegistryKey desktop = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
// desktop.SetValue("Coolswitch", 1);
// desktop.Close();
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}
}

}
}

estan comentadas algunas lineas que no me funcionaron, también creo que te dará algunos problemas el hecho de que el bloqueo/desbloqueo de teclas requiere reiniciar...

espero te sirva de algo
saludox!

Preguntas similares