Cambiar el Shell de ejecución predeterminado (Explorer.exe) en Windows 7.

Hola,

Este, más que un artículo, quiero verlo como un “Tip extendido”, puesto que es algo que he visto en varias consultas de los Foros y puede llegar a ser muy útil.

Cuando se implementa Windows en empresas Bancarias por ejemplo, o desde un Café Internet, se decide a veces que el personal sólo puede utilizar una sola aplicación todo el tiempo (En sucursales para el caso de los Bancos). A partir de esto, nace la necesidad de que el usuario no pueda interactuar con más aplicaciones ni mucho menos el algun proceso que parta del Explorador de Windows, como ventanas, barra de tareas, etc.

Lo que haremos en este post es configurar el Shell predeterminado de Windows 7, es decir, el Explorer.exe (Explorador de Windows), para que no sea el que inicie y en cambio, lo haga una aplicación que nosotros mismos definamos, como Internet Explorer o alguna de terceros.

*Nota: Explorer.exe es el proceso Padre en el sistema Operativo, a partir de este, se ve la barra de tareas, el menú de inicio, las ventanas y además representa el token de seguridad que adquieren los demás procesos que se ejecutan después de éste.

Primero veremos un poco de cómo determina Windows cuál es el Shell que debe ejecutar, cómo se configuraría por políticas de Grupo y finalmente cómo se haría lo mismo pero editando el comportamiento natural de Windows.

No hay herramienta más eficaz para comprender cómo funciona Windows que Process Monitor de Sysinternals, específicamente, la característica de Boot Logging que me permite ver todo lo que sucede internamente en el sistema operativo mientras está iniciando sesión, es decir, podremos ver qué es lo que hace Winlogon, proceso del sistema encargado del proceso de Logon en Windows.

Un poco del proceso de Winlogon

Si habilitamos la característica y hacemos el filtro por “Winlogon”, entre otras muchísimas tareas importantes, en qué momento se llama al Shell:

Winlogon1

Recordemos que de Process Monitor, podemos destacar tres principales columnas, la de la primera a la izquierda llamada “Operación” que nos dice qué tipo de operación se está haciendo, es decir, si es a nivel de Sistema de archivos, de Registro, de Red, etc; la columna central “Ruta” que nos indica dónde se está realizando la operación exactamente, y por último, la columna de “Resultado” que nos dirá con unas palabras claves si la operación que se intentó hacer en la ruta definida tuvo éxito, no se encontró, se pasó a otra operación, tuvo acceso denegado por permisos, etc.

En este orden de ideas, y analizando el resultado de la captura anterior, vemos que Windows utiliza la función RegOpenKey para abrir la clave de registro:
HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell

Sin embargo, el resutlado es NAME NOT FOUND, lo que indica que el valor Shell no existe predeterminádamente. Recordemos que HKEY_CURRENT_USER corresponde a las configuraciones por usuario, y prevalecerían con respecto a HKEY_LOCAL_MACHINE en caso de que existiera el valor y su contenido.

Después de esto, Windows utiliza la misma función pero esta vez para ir a la clave:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinLogon, la diferencia con la anterior, a parte de que consulta en HKEY_LOCAL_MACHINE que corresponde a todos los usuarios, es que esta vez el valor de Shell sí arrojó el resultado de SUCCESS (Exitoso) cuando se llamó a la función de RegQueryValue (Para consultar valores y contenido), por último cierra esta clave con la función RegCloseKey.

Después de esto, va lo interesante y es que utiliza la función de CreateFile para crear el proceso de Explorer.exe, justo después de haber leido el contenido del valor.

Si desde Process Monitor se abre el Editor de Registro haciendo clic derecho en la operación donde se consulta el valor de Shell, veremos esto:

image

El contenido del valor de Shell es “explorer.exe”, razón por la que Windows crea este proceso después de la operación de consulta.

*Nota: Esto es sólo una parte de lo que sucede al inicio de Windows y corresponde a Winlogon, hay muchas más tareas que en este artículo no se tocarán.

En conclusión, para evitar que Windows cargue el Explorer.exe y en vez de esto, ejecute de inmediato una aplicación personalizada, debemos editar el contenido de este valor poniendo la ruta completa del ejecutable y reiniciar, auque existe una alternativa más sencilla que es la Política de grupo. A continuación, pasaremos a ver los dos métodos existentes.

*Nota: El valor predeterminado está como explorer.exe (sin ruta) es porque está dentro de una variable de entorno del sistema operativo, lo que dará la posibilidad de llamar al ejecutable desde cualquier parte directamente.

*Nota 2: De aquí en adelante, me referiré a una ruta de ejemplo a la aplicación predeterminada, que en mi caso será Internet Explorer, cada uno debe cambiarla por la ruta completa de la aplicación que deseen, incluso si está en un recurso de red.

Método 1: Política de Grupo

Sea desde el Editor de Políticas de Grupo el Directorio Activo, o desde la Consola local en cada máquina, vamos al nodo de User Configuration (Configuración de usuario), Administrative Templates (Plantillas administrativas), System (Sistema), seleccionamos la política de Custom User Interface (Interfaz de Usuario personalizada):

image

Bastará entonces con seleccionar el radio de “Habilitar” y especificar la ruta completa en el cuadro de texto de la parte inferior:

image

Por último, bastará con cerrar sesión o reiniciar en los equipos unidos al dominio, o con los usuarios locales y el resultado será la ejecución sólo de la aplicación al iniciar sesión y no habrá nada del Explorador de Windows.

1.1. Modificando la política manualmente…

Como siempre, puede que haya equipos que no cuenten con la Consola del Editor de Políticas de Grupo –En el caso de las ediciones de Windows en la casa que no sean Enterprise o Ultimate-. Aquí entonces, debemos proceder a “forzar” el comportamiento de la política manualmente mediante el Editor de Registro de Windows.

Si no se sabe cómo, bastará con llamar nuevamente a Process Monitor y seguir el comportamiento de Windows mientras uno está aplicando la política en un equipo que lo soporte; aunque aquí no mostraré todo el proceso por lo que he tocado el punto en otros artículos, sí quiero que vean el resultado para esta política especialmente:

Winlogon2

El comportamiento es el mismo por cada política, los dos archivos referenciados en la captura (ntuser.pol y Registry.pol) son los que se encargan de copiar y replicar la política por cada usuario que inicie sesión en el equipo.

Ya viendo la política en cuestión, vemos que Windows hace uso de la función de RegSetValue para escribir el valor de Shell en la clave:
HKEY_CURRENT_USERMicrosoftWindowsCurrentVersionPoliciesSystem

Abriendo las propiedades de la operación haciendo doble clic o clic derecho y Properties, veremos qué es lo que está escribiendo en este valor:

Winlogon3

Como lo muestra “Data”, en este valor, después de crearlo, se está escribiendo como contenido toda la ruta a la aplicación que se especifique en la política, para mi caso: C:Program Files (x86)Internet Exploreriexplore.exe

Para replicar la política, lo que tendríamos que hacer sería:

– En cada equipo donde se desee aplicar (O distribuyéndolo), se debe ir hasta la clave:
HKEY_CURRENT_USERMicrosoftWindowsCurrentVersionPolicies

– Clic derecho, Nueva > Clave

– La llamamos System

– Seleccionamos la nueva clave, en la parte derecha, clic derecho, Nuevo > Valor de cadena

image

– Lo llamamos Shell, doble clic para editarlo y le indicamos la ruta de la aplicación a ejecutarse en vez del Explorer.exe

image

– Cerramos sesión o reiniciamos el equipo y estará hecho.

*Nota: Si algo sale mal, bastará con volver a entrar al Registro y arreglar la ruta o bien eliminar la clave para que vuelva al comportamiento natural.

Método 2: Cambiando el comportamiento predeterminado de Windows 7

Como vimos al principio, en cada inicio, Windows busca su Shell predeterminado, que es Explorer.exe y lo ejecuta para mostrar interfaz al usuario que recién ingresó.

Para modificar este comportamiento y cambiar el Shell por uno predeterminado, debemos hacer lo siguiente:

– En el Equipo que se desee tener esta configuración para todos los usuarios, hacer clic en Inicio, escribir Regedit, clic derecho, Ejecutar como administrador, y navegar hasta esta clave:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon

– Doble clic en el valor Shell para modificarlo, y lo cambiamos por la ruta que deseamos sea la predeterminada, en este caso a la de Internet Explorer:

image

– Aceptamos, cerramos sesión o reiniciamos el equipo, y ahora, cada usuario que entre, tendrá como Shell predeterminado, la aplicación que hayamos configurado:

image

Si no queremos que sea para todos los usuarios, sino para algunos en especial, debemos seguir hacer lo siguiente:

-Navegar hasta la clave:
HKEY_CURRENT_USERSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon

– Clic derecho sobre el espacio en blanco a la derecha, seleccionar Nuevo > Valor de cadena

– Debemos llamarla Shell, ya que como verán, no existe de forma predeterminada.

– Doble clic para editar el valor y especificar la ruta a la aplicación.

– Cerrar sesión o reiniciar el sistema, así, sólo el usuario al que se le haya personalizado el Shell predeterminado, será el que se le presente, los demás usuarios tendrán el Explorer.exe como normalmente estaría.

*Nota: En cualquiera de todos los casos, si hay problemas, bastaría con invocar el Administrador de tareas para crear el proceso de Explorer.exe, editar fácilmente el Registro de Windows para quitar o corregir la ruta en que haya quedado mal, cerrar sesión y volver a ingresar a probar.

Para cambiar de usuario, reiniciar o apagar, bastaría con presionar CTRL + ALT + Suprimir y seleccionar la opción que se busque.

¡Esto es todo!

Espero les pueda servir.

¡Feliz Navidad para todos!

Checho

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *