Deshabilitar programáticamente el administrador de tareas, el registro, y las propiedades de pantalla
|
. |
Este artículo muestra como habilitar y deshabilitar desde código (VB.NET) el administrador de tareas, el registro y las propiedades de pantalla en los sistemas operativos Windows XP y Windows 2000 (sólo he probado en ambos).
Adjunto con el artículo una simpática y sencilla aplicación que realiza todo lo mencionado anteriormente, desarrollada en Visual Studio 2003 (Windows Forms).
Requisitos
Para lograr cada uno de los tres cometidos, se debe acceder a sendas claves de registro, cuyos valores indican al sistema operativo si cada característica está o no habilitada para el usuario actual.
Primero, se deben crear la siguiente clave de registro (si es que no existe):
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\systemLuego, se deben crear los siguientes valores de tipo D_WORD en dicha clave:DisableRegistryTools disabletaskmgr NoDispCPLCódigo Fuente
Primero, se debe realizar la siguiente importación:
Imports Microsoft.Win32Si no se desea ir al registro manualmente, también se puede verificar la existencia de la clave y valores especificados por código, y crearlos si es necesario. El código para hacer esto es el siguiente:
Para verificar y crear de ser necesario la clave del registro:
Public Sub crearLlave() Dim r As RegistryKey = Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system") If IsNothing(r) Then Registry.CurrentUser.CreateSubKey( _ "software\microsoft\windows\currentversion\policies\system") End If End SubPara verificar y crear de ser necesario los valores necesarios dentro de dicha clave:
Public Function crearValorAdminTareas() Dim r As RegistryKey = Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) r.SetValue("disabletaskmgr", 0) End Function Public Function crearValorRegistro() Dim r As RegistryKey = Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) r.SetValue("DisableRegistryTools", 0) End Function Public Function crearValorPantalla() Dim r As RegistryKey = Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) r.SetValue("NoDispCPL", 0) End FunctionEl truco consiste en acceder a los valores del registro creados y modificarlos. El código en Visual Basic .NET para habilitar y deshabilitar cada una de las mencionadas características del sistema operativo es el siguiente (para todas las características, el valor de "0" significa habilitación y "1" significa deshabilitación):
Public Sub desactivarAdminTareas() Dim regkey As Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) regkey.SetValue("disabletaskmgr", 1) regkey.Close() End Sub Public Sub activarAdminTareas() Dim regkey As Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) regkey.SetValue("disabletaskmgr", 0) regkey.Close() End Sub Public Sub desactivarRegistro() Dim regkey As Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) regkey.SetValue("DisableRegistryTools", 1) regkey.Close() End Sub Public Sub activarRegistro() Dim regkey As Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) regkey.SetValue("DisableRegistryTools", 0) regkey.Close() End Sub Public Sub desactivarPropiedadesDePantalla() Dim regkey As Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) regkey.SetValue("NoDispCPL", 1) regkey.Close() End Sub Public Sub activarPropiedadesDePantalla() Dim regkey As Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( _ "software\microsoft\windows\currentversion\policies\system", True) regkey.SetValue("NoDispCPL", 0) regkey.Close() End SubEste código no funcionará si no se han creado correctamente la clave y valores de registro mencionados.La habilitación y deshabilitación de dichas características sólo será efectiva para los usuarios regulares del computador (debido a que las claves están en el directorio HKEY_CURRENT_USER). Es decir, la sesión del usuario administrador no será afectada. Para que esto sí ocurra, se debe utilizar HKEY_LOCAL_MACHINE.
Mayor información
Para obtener mayor información acerca de las clases RegistryKey y Registry, visitar los siguientes links:
Registry: http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpref/html/frlrfmicrosoftwin32registryclasstopic.asp
RegistryKey: http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpref/html/frlrfmicrosoftwin32registrykeyclasstopic.aspPRECAUCIÓN: Se debe tener cuidado con la utilización de este código, ya que por ejemplo si se deshabilita todo, ¡ya no se puede ingresar al registro para volverlo a habilitar manualmente! (se da un círculo vicioso, jeje). Para evitar dolores de cabeza, se debe tener siempre a mano un ejecutable con código para habilitar todas las características mencionadas.
Finalmente, no duden en escribirme con cualquier duda o problema que les pueda surgir a raíz del presente artículo, y por favor, ¡no olviden votar en la caja de PanoramaBox (arriba a la derecha) si es que el artículo les ha parecido interesante y/o útil!!. Muchas gracias.
Fichero con el código de ejemplo: javierpelaezt_DeshabilitacionCaracteristicasWindows.zip - Tamaño 10 KB