jueves, marzo 09, 2006

Problemas con Opciones de carpeta y cuentas no administrativas

En un artículo anterior de mi bitácora expliqué una razón para trabajar con una cuenta con los menores privilegios posibles. Sin embargo, cumplir a rajatabla los requisitos de todo software que quiera funcionar en cuentas sin privilegios administrativos es algo que hasta Microsoft puede "saltarse" en algún momento, produciendo efectos tan curiosos como el que se describe en este artículo.

Windows incorpora desde hace bastantes años un panel que permite personalizar el modo en el que se presenta el contenido de carpetas, las asociaciones de las extensiones de archivo, etc. Se llama Opciones de carpeta y está situado en Panel de control.

Aspecto del panel Opciones de carpeta en un sistema Windows XP

Si se accede a ese panel desde una cuenta sin privilegios administrativos y se selecciona alguna de las siguientes opciones:

  • Subrayar los títulos de iconos que coincidan con el explorador
  • Subrayar los títulos de iconos cuando yo los señale

Al pulsar Aplicar o Aceptar no notará cambio alguno en la configuración del subrayado de las carpetas y/o archivos del explorador.

Si inicia sesión con una cuenta administrativa, según seleccione una opción u otra notará que los nombres de los iconos quedan siempre subrayados (si activa la primera opción), o bien sólo se subrayan cuando se pasa el puntero del ratón sobre ellos (si activa la segunda). Este es el efecto esperado.

¿Por qué no funciona esta característica en una cuenta sin privilegios administrativos?

El explorador de Windows hace el uso del archiconocido Registro para almacenar la selección de esta opción del panel Opciones de carpeta: En concreto el valor IconUnderline de la clave HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer le dirá a Windows qué opción se ha elegido (y por tanto la que deberá aplicar):

Valor

Acción seleccionada

03 00 00 00

Subrayar los títulos de los iconos que coincidan con el explorador

02 00 00 00

Subrayar los títulos de los iconos cuando yo los señale


El problema en sí no reside en la lectura del valor, reside en su creación: en una cuenta con privilegios no administrativos no se llega a generar. Se preguntará por qué, si dicho valor está situado en una clave que pende de la rama principal HKCU\ (donde un usuario cualquiera puede escribir). Pues la razón es que el explorador "silenciosamente" trata de escribir en una rama no permitida a un usuario no administrador (HKLM\) y, al no conseguirlo, no se llega a generar el valor IconUnderline en su lugar correspondiente.

Concretamente Explorer.exe trata de crear cada vez las siguientes claves en el Registro de Windows:
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer
Lo hace por si éstas no existieran. En una cuenta administrativa la creación de ambas no presenta ningún problema, pero en una cuenta limitada la segunda no se podrá crear y le devolverá un mensaje de "access denied" a Explorer.exe. Éste no "sabe" cómo seguir y no genera el valor IconUnderline en la clave que corresponde.

Solución al problema

He ideado un rodeo para evitar el problema:

Afirma el dicho que si Mahoma no va a la montaña, la montaña va a Mahoma; así que si Explorer.exe no "sabe" crear el valor en el Registro, créemoslo manualmente por él:

Nota: El siguiente procedimiento implica la manipulación del Registro de Windows. Le recomiendo que genere un punto de restauración antes de continuar.


  1. Inicie sesión con la cuenta limitada.

  2. Abra Inicio, Ejecutar, escriba notepad y pulse Aceptar.

  3. Copie y pegue en la ventana de Bloc de notas alguno de los siguientes textos (indicados en color rojo):
  4. Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
    "IconUnderline"=hex(0):03,00,00,00

    (Si desea activar la opción "Subrayar los títulos de los iconos que coincidan con el explorador").

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
    "IconUnderline"=hex(0):02,00,00,00

    (Si desea activar la opción "Subrayar los títulos de los iconos cuando yo los señale").

  5. Pulse Archivo, Guardar como, seleccione Todos los archivos en la lista desplegable Tipo, escoja una ubicación cualquiera, escriba Subrayado.reg en la caja Nombre y pulse Guardar.

  6. Cierre Bloc de notas.

  7. Haga doble clic sobre el fichero que acaba de crear, pulse y haga clic sobre Aceptar.

Espero que les haya parecido interesante, ya ven que hasta Microsoft a veces no piensa lo suficiente en los entornos sin privilegios administrativos. Afortunadamente el error no es demasiado grave.

domingo, febrero 26, 2006

Un almacén especial

Los sistemas NT como Windows 2000 o Windows XP disponen de un almacén de recursos de elementos de escritorio que en cierta medida supone una limitación del número de ventanas, menús o incluso servicios que se pueden ejecutar simultáneamente en Windows. Es lo que se conoce como desktop heap.

Dada la arquitectura y complejidad del shell de Windows, dentro de su subsistema gráfico reina una necesaria jerarquía: Existen estaciones de ventana, cada una de las cuales puede contener un cierto número de escritorios (o incluso no contener ninguno). A cada uno de estos escritorios (nótese que el concepto va más allá del espacio donde se sitúa un fondo de pantalla y unos iconos) se le asigna un montón (heap) donde almacenar cadenas, imágenes, menús, manejadores, etc. En total los montones de escritorio (desktop heaps) de un sistema Windows no pueden exceder los 48 MB.

En Windows existen las siguientes estaciones de ventana:

  • Winsta0: Es una estación de ventana interactiva, lo que quiere decir que cualquier elemento o servicio que se sitúe en ella podrá mostrar información visual y recibirla. En esta estación de ventana por defecto hay tres escritorios creados: Winlogon, encargado del inicio de sesión, Default, al que se "adhieren" por defecto todos los procesos y servicios iniciados por el usuario (los que interactúen con el escritorio) y Screen-saver, que se crea cuando el salvapantallas entra en funcionamiento.

  • Service-0x0-3e7$: Es una estación de ventana no interactiva, por lo que los procesos, servicios, etc. que se situén en ella no podrán mostrar una interfaz gráfica.

Diagrama simplificado de las estaciones de ventanas y escritorios del subsistema gráfico de Windows

Nota: Dispone de más información sobre las APIs CreateWindowStation y CreateDesktop (CreateDesktopEx) en los siguientes enlaces: CreateDesktop/CreateDesktopEx, CreateWindowStation.

Cada escritorio, según pertenezca a una estación interactiva o no interactiva tiene un tamaño máximo del heap asignado desde el Registro de Windows, concretamente en la clave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems (valor Windows de la parte derecha):

Si modifica el segundo y el tercer parámetro de la cadena SharedSection=, el sistema podrá almacenar más recursos de escritorio en estaciones de ventana interactivas y no interactivas, respectivamente. Esto se consigue a costa de reducir el número de escritorios que se puedan generar en el sistema.

Nota: Los cambios requieren un reinicio del sistema operativo para que surtan efecto.

¿Y qué ocurre cuando se alcanza el límite del almacén? Cuando se alcanza el límite o bien le aparecerá en pantalla algún error referenciando a User32.dll (o Kernel32.dll) o bien se encontrará con un sistema gráficamente inservible. Eche un vistazo al siguiente vídeo que he realizado y que demuestra esto: Vídeo.

Nota: Si dispone de una conexión lenta a Internet quizá le venga mejor descargar el vídeo. Para ello seleccione el enlace con el botón derecho del ratón y pulse sobre Guardar destino como (Internet Explorer).

En el vídeo se ve que voy abriendo intempestivamente instancias de Internet Explorer. El sistema con pocas ventanas se comporta adecuadamente (vea que puedo acceder al menú contextual sin problemas), pero cuando llego a abrir 56 ventanas observará que no puedo abrir ninguna más, que los menús contextuales de la barra de tareas no llegan siquiera a mostrarse y que la última ventana sólo muestra el icono estándar de Internet Explorer, los menús no se muestran . Hemos llegado a un punto en el que la interfaz gráfica de Windows ha quedado "inutilizada" por alcanzar el máximo del almacén de recursos del escritorio.

Nota: Los sistemas de 64 bits como XP Professional x64 disponen de un tamaño de desktop heap bastante elevado, por lo que no existe el riesgo de agotarlo. Además, la clave de Registro mencionada anteriormente no es tenida en cuenta si en el fichero Boot.ini existe el parámetro /3GB.

sábado, febrero 18, 2006

¿Qué nos traerá Windows Vista? ¿Merecerá la pena actualizarse?

En este artículo presentaré las principales mejoras que se encontrará el usuario final que se actualice a Windows Vista desde el momento en que esté disponible en el mercado (mediados-finales de este año). Este es el primero de los artículos sobre Windows Vista que espero exponer por aquí.

Graficamente, ¿qué nos vamos a encontrar?

Aún es pronto para definir una experiencia visual que se incorpore a la versión final de Windows Vista, pero podemos vislumbrar algunas novedades notables, la más destacada es Aero:

Aero, el nombre de código de la nueva interfaz gráfica de Windows Vista, supondrá una importante mejora con respecto a la interfaz gráfica de los sistemas Windows anteriores. Aparecen efectos 3D (como la capacidad de moverse entre ventanas usando la rueda del ratón), nuevas animaciones, instantáneas gráficas de las ventanas abiertas tanto en la barra de tareas -aparecen al dejar el puntero del ratón sobre cada una de ellas- como pulsando la combinación Alt+Tab, y transparencias visuales. Todo ello aprovechable por una nueva generación de controladores gráficos, llamados LDDM (Longhorn Display Driver Model), que deberán estar sustentados por hardware gráfico relativamente moderno. Consulte la web del fabricante de su tarjeta gráfica para obtener más información sobre compatibilidad con Windows Vista. No obstante existirán varios "niveles" de configuración de la interfaz gráfica, con el fin de adaptarse a aquellos sistemas gráficos relativamente antiguos.

¿Qué tal la facilidad de uso de Windows Vista?

La curva de aprendizaje para un usuario medio que provenga de Windows XP es suave. Se mantiene la idea de Windows XP con ciertas novedades, como una mayor organización del Panel de control, tareas intuitivas a la vista, menús menos reconcentrados de opciones, etc. Además el nuevo menú Inicio, desde el que podrá hacer todo lo que realiza ahora mediante la opción Ejecutar, ahorrará bastante tiempo a la hora de realizar ciertas tareas rutinarias en el PC.

¿Es estable Windows Vista? La arquitectura interna cambia de manera considerable

Windows Vista parte de la base de Windows XP, así que es de esperar que mantenga la estabilidad que ha hecho gala este sistema operativo durante años. Además se introducen cambios importantes:
  • El subsistema gráfico de Windows Vista ya no está incorporado en el modo kernel (núcleo), como sí lo estaba en Windows XP; ahora todo este subsistema se ha "movido" al modo user (usuario). Esto supone que un fallo gráfico no nos dejará "colgado" el sistema operativo, algo que sí podía ocurrir en Windows XP cuando se usaban controladores gráficos mal diseñados u obsoletos.

  • Lo mismo sucede con el subsistema de sonido de Windows. Ahora los controladores de sonido actuarán en modo user en lugar de en modo kernel.

Esto tiene como consecuencia una clara mejora en la estabilidad del sistema, pero obligará a los fabricantes de hardware a diseñar "de otra manera" sus controladores. Veamos cómo se van adaptando durante este tiempo hasta que aparezca la versión final del sistema operativo.

¿Es compatible con las aplicaciones más antiguas?

El nivel de compatibilidad con aplicaciones es similar al de Windows XP, con puntualizaciones: Durante la beta se han ido encontrado bastantes problemas menores con aplicaciones, problemas que afortunadamente se van solucionando progresivamente. Además, el fabricante de software va a tener que adaptarse a un entorno que por defecto no gozará de privilegios administrativos, quizá este sea un escollo para las aplicaciones más antiguas, veremos qué pasa según avanza el periodo beta. No obstante, Microsoft ha pensado en ello, siga leyendo.

¿Es seguro? ¿Qué es eso de que no va a funcionar por defecto como administrador? ¡Quiero instalar mis programas fácilmente!

Seguramente esta es la pregunta que más se ha formulado cuando ha oído hablar de UAP (User Account Protection), que supone que el usuario que inicie sesión en Windows Vista (aunque lo haga como administrador local) no obtendrá efectivos privilegios administrativos.

Cuando UAP esté activado y el usuario haya iniciado sesión con un usuario con privilegios administrativos realmente estará trabajando en un entorno limitado (es lo que Microsoft denomina Administrator Approval Model (modelo de aprovación del administrador, en español). Cuando quiera realizar una tarea que realmente requiera privilegios administrativos (señaladas de manera especial en la interfaz gráfica), se le pedirá una confirmación. Esto supone que el usuario dispone de privilegios limitados para realizar sus tareas cotidianas (leer el correo electrónico, navegar por Internet...) mientras que puede en cualquier momento realizar una tarea administrativa de manera cómoda y sencilla.

Además, los usuarios limitados disponen de algunos privilegios más de los que tenían en Windows XP (para realizar tareas que no supongan riesgos: mostrar el panel Fecha y hora, cambiar la zona horaria, entre otras).

¿Y las aplicaciones antiguas que no "saben" trabajar en entornos limitados? Microsoft ha ideado una virtualización del sistema de archivos y del Registro para que las aplicaciones de este tipo funcionen correctamente. Por ejemplo, cuando una aplicación quiera escribir en la rama del Registro HKEY_LOCAL_MACHINE (rama en la que los usuarios limitados no pueden escribir), Windows le "virtualizará" una copia de la rama que desee en su propio espacio operativo (más restringido), así pues la aplicación seguirá funcionando correctamente sin escribir en áreas críticas del sistema operativo. Durante la beta he comprobado que este método funciona bastante bien con las aplicaciones que he probado.

Como conclusión decir que Windows Vista es un sistema prometedor. Aún se le observan ciertas carencias propias de una versión beta, pero confiamos en que Microsoft presente un sistema maduro y confiable (se retrasará el lanzamiento final si hace falta). En poco tiempo aparecerá la versión Beta 2, que se supone "cerrada" en cuanto a características que se incorporen al producto final, así que esperamos acontecimientos con ilusión.

Este es un primer adelanto sobre lo que se encontrará con Windows Vista. Quedan bastantes temas por tratar y algunos en los que deseo detenerme más. Si el NDA de las posteriores builds de Vista me lo permite intentaré comentar algo más sobre el nuevo sistema operativo según vaya avanzando su desarrollo, y mostraré capturas de pantalla para que vea cómo se muestra al usuario el nuevo sistema.

Espero que les haya parecido interesante.