[Tip] Ejecutando Sysinternals Tools desde cualquier parte en Windows.

Básicamente, las Suite de herramientas de Sysinternals Tools permiten tanto a los Administradores de sistema, como a los desarrolladores y a los apasionados por la tecnología en general enfocándonos a Windows hacer diagnostico y solución de problemas (Si nos referimos a IT), además de Administración y debug de las aplicaciones que se desarrollen (Si nos referimos a Developers).

Personalmente, hay tres de estas herramientas que me han ayudado muchísimo a entender conceptos core de Windows solucionando problemas, me refiero a Process Explorer, Process Monitor y Autoruns. Por tanto, me gusta tenerlas siempre a la mano sea en dispositivos, o bien en sistemas virtuales o físicos.

El pequeño “problema” es que aunque son de Microsoft, las herramientas actúan de forma portable (No requieren instalación)  por lo que normalmente se pueden descomprimir en alguna carpeta del directorio que deseemos y ejecutarlas desde ahí, enlazánolas por ejemplo desde la barra de tareas o el escritorio, o bien usando la búsqueda de Windows.

Esto está bien, pero no siempre se vuelve completamente productivo porque la carpeta fácilmente puede desaparecer y siempre tendría que recurrir a la misma manera de ejecución.

Es aquí donde entran las famosas Variables de entorno.

Las Variables de Entorno básicamente especifican rutas de búsqueda para archivos, aplicaciones, directorios temporales, entre otros, en otras palabras almacenan datos que el sistema y las aplicaciones pueden utilizar, por ejemplo: %SYSTEMDRIVE% se refiere a la ubicación donde está instalado el sistema operativo, en la mayoría de los casos C:Windows

La ventaja como ven, es que lo que además de que puedo referirme a la variable para encontrar la ubicación sin importer donde esté por ejemplo, es que puedo ejecutar su contenido también desde diferentes lugares dentro de Windows.

Existen unas variables de Entorno que se refieren específicamente a rutas del sistema, por ejemplo cuando ejecutamos Notepad, Calculadora, Regedit y cualquier otra herramienta desde la Consola de comandos, El menu de inicio o desde una aplicación, Windows está buscando internamente su contenido dentro de la variable de entorno Path en la ubicación C:Windows ó C:WindowsSystem32 por ejemplo.

Algunas personas acostumbran a poner las herramientas que requieren de Sysinternals en C:WindowsSystem32, así pueden ejecutarlas desde cualquier parte, pero resulta un poco más provechoso si enlazamos toda la Suite entera en un solo directorio para que tenga el mismo resultado sin necesidad de entrar en directorios protegidos del sistema.

Estableciendo una Variable de entorno para Sysinternals Suite

1. Lo primero que debemos hacer es descargar toda la Suite de herramientas de Sysinternals, o bien las herramientas que deseemos, desde www.sysinternals.com y más precísamente para la Suite desde aquí: http://download.sysinternals.com/Files/SysinternalsSuite.zip

2. Descomprimimos la carpeta para que nos quede la de SysinternalsSuite y la renombramos si nos parece más cómodo o bien símplemente dejamos el nombre predeterminado que en últimas no sera de mucha importancia.

3. Para asegurarnos de que nadie más pueda modificar el contenido ni la carpeta de la Suite, la ubicamos en el directorio C:Archivos de programa, la ruta completa, por ejemplo sería: C:Archivos de programaSysinternalsSuite

image

4. Ya está la ruta, ahora, para referenciarla hacemos clic en Inicio, clic derecho sobre Equipo, Propiedades y en la ventana de Propiedades del sistema abrimos Configuraciones avanzadas del sistema.

En la ventana de Propiedades del sistema, pestaña Avanzado, debajo del nodo de Inicio y recuperación veremos el botón de Variables de entorno:

image

5. En la ventana de Variables de Entorno, buscamos debajo de Variables del Systema, la variable Path y hacemos clic en el botón Editar (Edit):

EV

6. Por último, en la ventana de Editar Variable del Sistema, nos ubicamos en la última disponible, para agregar otro directorio empezamos con un signo de punto y coma ( ; ) y después la ubicación a la que deseamos hacer referencia, por ejemplo C:Archivos de programaSysinternalsSuite

EV2

*Nota: Podemos hacer referencia incluso con otra variable de entorno, por ejemplo, en vez de decir C: nos referimos a %SystemDrive%, quedaría: ;%SystemDrive%Program FilesSysinternalsSuite

Después de hacer clic en el botón Aceptar (OK), podremos lanzar cualquiera de las herramientas desde los diferentes métodos en Windows, por ejemplo : Menú de inicio, Consola de comandos, Ventana de Ejecutar, Cuadro de búsqueda del Explorador de Windows, etc:

image

*Nota: Debemos referirnos al nombre del proceso, por ejemplo si es Process Explorer, sería: procexp

¡Eso es todo! Espero les pueda ser de utilidad.

Saludos,

Checho

Windows Live y Windows 8, mejor juntos: Sync PC Settings

¡Hola!

Es magnífico poder escribir nuevamente por aquí y con buenas noticias.

El día de ayer 13 de Septiembre de 2011 Microsoft en su gran evento BUILD hizo pública la primera versión de Windows 8 en una fase denominada Pre-Beta, el nombre actual con el que se referencia es Windows Developer Preview.

Como es de saberse, esta fase Pre-Beta representa un primer avance de lo que se pretende mostrar ahora enfocado al estilo METRO tocando un poco más la nube además pero, en realidad esta compilación es todavía muy jóven puesto que no ha llegado ni siquiera hasta Beta. Esto quiere decir que de aquí a la gran GA (Disponibilidad general) probablemente hayan demasiados cambios con respect a lo que vemos hoy en día.

Para todos los que deseen, pueden realizar la descarga de este Windows Developer Preview que se encuentra en las dos arquitecturas más conocidas (x86 y x64) desde la página oficial de Microsoft: http://msdn.microsoft.com/en-us/windows/apps/br229516

Sin embargo, el propósito de este post no es sólo entregar la noticia (Que para esta hora, medio planeta la debe saber) sino permitirme escribir sobre una de las características que más me ha llamado la atención hasta ahora, se llama Sync PC Settings.

Una de las primeras diferencias al instalar Windows 8 (Developer Preview) es que a parte de preguntar por el nombre del equipo y una nueva forma de configurar las demás opciones rápidamente es que ahora pedirá un correo electrónico como opción predeterminada para iniciar por primera vez sesión:

T2

Después de darle al botón Siguiente (Next) procederá a preguntarnos las credenciales correspondientes de nuestro Windows Live ID, es tal como si estuviéramos iniciando session en nuestra bandeja de entrada:

T3

*Nota: Si no se dispone de internet o de una cuenta, o tal vez símplemente no se quiere asociar una cuenta de Live ID (Hay varias razones por las que no se podría querer), el asistente brinda una forma de crear la cuenta local, sin embargo no la detallaré aquí por no se el propósito del post.

Lo interesante de todo esto es que a partir de que iniciemos sesión, siempre podremos hacerlo con nuestras propias credenciales por lo que no sera explícitamente necesario disponer de cuentas locales, todo lo que necesito ahora es disponer de mi Live ID =)

Una de las ventajas que entrega esto es por supuesto la seguridad de nuestra contraseña, la posibilidad de iniciar automáticamente sesión en todos los sitios de Microsoft en que se pueda (prácticamente todos!) y lo más interesante, hacer uso de Sync PC Settings.

Sync PC Settings lo podemos asemejar con una característica que ya disponemos a nivel de directorio active con Windows Server y Windows 7 y es los Perfiles rodantes o Roaming Profiles pero esto se va por internet.

Básicamente cada que iniciemos sesión en un equipo que esté corriendo Windows 8 (Por lo menos esta versión de Developer Preview) con la cuenta de Windows Live ID, automáticamente sincronizará varias configuraciones y personalizaciones que haya hecho en equipos previamente. Si es la primera vez, guardará las que se hagan para un próximo inicio de sesión.

Esto es configurable por supuesto, basta con ir al la página de Inicio presionando la tecla Windows o bien hacienda clic en el botón Start, seleccionar Control Panel (Panel de control) y buscar el tab de Sync PC Settings y podremos ver lo que nos seguirá con nuestro perfil:

T5

En pocas palabras, podremos disponer en cada inicio de sesión de lo siguiente:

– Fondos de pantalla que hayamos establecido

– Fondos de pantalla de inicio de sesión (Lock Screen, Nuevo en Win8)

– Personalización de los colores de la barra de tareas y sonidos.

– Configuración de algunas aplicaciones

– Configuración y personalización de nuestro navegador

– Imágenes de usuario, configuración de Grupo de Hogar, y hasta personalizaciones en las opciones de carpeta de Windows.

– Entre otros pocos.

Todos son completamente personalizables desde esta página, por lo que podremos desactivar algunos o todos al tiempo desde Sync settings on this PC.

¿Cómo funciona?

Como la opción está predeterminada, lo único que tenemos que empezar a realizar son las configuraciones que normalmente hacemos a nuestro perfil de usuario (Fondos de pantalla, de aplicaciones, etc) en un equipo, cuando iniciemos sesión en otro con las mismas credenciales (incluso podemos estar con la sesión iniciada en dos equipos al tiempo y habrá sincronización) a los pocos minutos (Dependiendo de la conexión de internet) podremos visualizar todos los cambios.

Para ilustrar un poco más, para este artículo inicié sesión en un primer equipo con una cuenta de Windows Live ID (@windowslive.com) , lo siguiente fue personalizar el Lock Screen, el fondo de pantalla, el color de la barra de tareas a negro y finalmente cambiar las opciones de carpeta para que mostraran los archivos protegidos por el sistema:

PC 1: Windows 8 Test

Lock Screen:

image

Desktop settings:

T6

PC 2: Windows 8 Test 2

En el otro PC, basta con iniciar sesión si es que no se ha hecho o bien esperar unos cuantos segundos para la magina! Smile

Inicio de sesión:

image

Desktop:

T8

Lock Screen:

image

En imágenes puede costar creerlo, pero los invite a que lo prueben ustedes mismos y vean la velocidad de actualización, incluso con las dos cuentas en la sesión simultánea.

*Nota: Es muy importante no dejar abiertas las sesiones porque puede traer peligro a la integridad de la cuenta de Live ID asociada si entran a las configuraciones dentro de Hotmail.

Como ven, hay varias características aún en esta primera fase que pudieron haber notado adicionales como la apariencia, lo del Lock Screen (Trataré de verlo pronto), Hyper-V entre muchas otras.

Los invite a que estén pendientes al evento de BUILD que se celebra hasta el próximo 16 de Septiembre donde podrán ver de primera mano todos los cambios destinados a Desarrolladores sobre todo pero que incluyen por supuesto varias de las propuestas como esta que propone Windows 8.

*Off topic: ¿Tienes Twitter? Ahora he creado una cuenta donde estaré compartiendo lo que más pueda y les agradezco a los que me quieran seguir. Para hacerlo, basta con seguir el siguiente enlace: Checho on Twitter

*Nota: Muchas de estas funcionalidades y de hecho la apariencia pueden variar de aquí hasta la versión final que sea liberada, por lo que este artículo está soportado por ahora sólo en esta Preview, cualquier cambio que se de sobre el mismo lo estaré informando en futuros post que espero escribir.

Saludos,

Checho

El error: “No se tiene acceso al servicio de Windows Installer…”; Process Monitor, WinDiff y su solución.

LogoBlogWithSlogan

¡Hola nuevamente!

Quisiera contar como un Off-topic que estoy muy contento con las últimas máquinas virtuales con las que he tratado de trabajar porque me han dado la oportunidad de darme un poco más de aprendizaje que he tratado de compartir aquí.

A continuación detallaré otro problema que no es demasiado común pero suele pasarle a varias personas, como siempre seguiré la línea de: El problema, la causa y su solución.

*Nota: Para los que tengan el inconveniente y no deseen ver el desarrollo de todo el artículo para solventarlo pueden ir directamente a “La solución” en la última parte del artículo y seguir los pasos.

El problema

El error empezó cuando estaba tratando de instalar un paquete .MSI (Windows Installer) del Cliente de Windows Intune en una de las máquinas para que fuera reconocido por la Consola de administración (Espero pronto tratar algunos temas de estos).

Cuando le di doble clic para iniciar la instalación, obtenía este mensaje de error:


MSI1

No se tiene acceso al servicio de Windows Installer. Esto puede suceder si Windows Installer no está correctamente instalado. Póngase en contacto con el personal de soporte técnico para obtener ayuda”.

En Inglés, el mensaje sería similar al siguiente:

The Windows Installer Service could not be accessed. This can occur if the Windows Installer is not correctly installed. Contact your support personnel for assistance”.


*Nota: El mensaje de error puede variar con algun código de error incluido, pero suelen referirse a lo mismo.

No tenía idea a qué se podría deber este problema porque ni en física ni en virtual acostumbro a instalar aplicaciones de mantenimiento que suelen ser las primeras causantes de estos inconvenientes pero como había utilizado tanto la máquina en los anteriores contenidos, probáblemente “algo” había hecho. Aunque algo había visto del problema en los Foros, quería aprovechar la oportunidad para tratar de investigarlo y solucionarlo, por supuesto, había que hacer uso de la única herramienta que puede dar una completa visión de lo que esté pasando: Process Monitor de Sysinternals.

La causa

Procedí entonces a reproducir el mensaje de error mientras tenía Procmon activo, así cualquier actividad que sucediera mientras me entregaba el mensaje la podría rastrear.

Después de reproducirlo, paré Process Monitor y empecé a buscar algo que me ayudara a identificar la causa del problema pero tuve una gran mala suerte y es que no aparecía nada relacionado con operaciones faltantes o que tuvieran acceso denegado como normalmente lo hace. Lo segundo fue entonces comparar el error y el primer pantallazo que debía salir en un equipo funcional pero de nuevo, nada anormal y de hecho, todas las operaciones relacionadas con Windows Installer las estaban cumpliendo los dos equipos con resultados satisfactorios.

Antes de seguir con Process Monitor, pensé que podría entonces estar el problema relacionado con el servicio propio de Windows Installer, así que abrí la Consola de Servicios en el PC que presentaba el error, pero al buscar Windows Installer me sorprendí con que el Servicio no estaba:

image

Revisé en uno de los equipos funcionales y en efecto, el Servicio debía estar disponible:

MSI4

El Servicio probáblemente entonces no estaba registrado (No sabía cómo se le había perdido), aquí el hecho que al intentar instalar algun paquete no pudiera acceder a éste. Debía encontrar era como volverlo a su funcionalidad.

Volví a Process Monitor y pensé que quizá al correr el paquete en el equipo que corría correctamente, Process Monitor podría darme un poco más de información o por lo menos alguna pista útil.

Empecé parte de la instalación, abrí Procmon y busqué esta vez por el nombre interno del servicio (msiserver) y esta vez, el primer resultado fue la pista contundente:

MSI0

Windows estaba haciendo uso de la función RegOpenKey para abrir la clave:
HKEY_LOCAL_MACHINESystemCurrentControlSetservicesmsiserver

Después de esto empezaba a realizar consultas a varios de sus valores, unos con buen resultado y otros no tanto, pero como era en el equipo funcional era totalmente normal. Por último cerraba completamente la clave que había abierto (msiserver).

Bajo esta clave están alojados todos los Servicios de Windows, como éste de Windows Installer está establecido a manual, probáblemente estas operaciones incluían la inicialización y su respectivo trabajo, el problema era que bajo la Consola de servicios del equipo con el error no aparecía el Servicio, al no aparecer no podía hacer la consulta, al no poder hacer la consulta no podía proceder con la instalación y era cuando da el molesto mensaje.

Ahora, como estos son claves y valores de Registro, debía ver qué sucedía en el equipo con el problema, procedí entonces a abrir el Editor de Registro, navegué esta la clave y me encontré con esto:

MSI3

Habían algunos valores pero en ninguna parte hacía referencia al Servicio de Windows Installer (msiserver), abrí la misma clave en el equipo funcional y esta fue la grata sorpresa:

MSI2

A parte del valor ImagePath que referencia la ruta del Servicio, era obvio que en el equipo que presentaba el problema hacían falta varios valores más, por ahí podría estar el problema.

Comparando con WinDiff

Leyendo el fantástico libro de Sysinternals Administrator’s Reference de Mark Russinovich y Aaaron Margosis; entre uno de los problemas que precísamente había documentado aquí hace ya algun tiempo sugerían utilizar WinDiff cuando se tratara de hacer comparación de archivos.

WinDiff, es una herramienta incluida en el SDK de Windows, entre todos los tipos de archivo plano que permite comparar, se encuentran los de Registros de Windows.

Aproveché esta gran característica, además de que tenía WinDiff instalado, así que exporté las dos claves de Registro, tanto del equipo funcional como del no funcional, abrí WinDiff fui al menú File y seleccioné Compare files…

image

Lo siguiente es abrir los dos ficheros a comparar y en unos segundos, WinDiff entregará un resultado preciso de la diferencia entre lo que hayamos puesto a comparar. Para este caso, el resultado fue el siguiente:

image

*Nota: Hacer clic en la imagen para verla en tamaño completo.

Normalmente, WinDiff diferencia el contenido de los dos archivos asignándoles un color, por lo general Rojo y Amarillo, o bien Rojo y negro, entre otros.

Cuando sólo aparece un sólo color, y el signo de <! , indica que cada una de esas lineas difiere del archivo contra el que se está comparando

Para este caso, ya podía estar seguro de que hacía falta los valores: ImagePath, ObjectName, Start, Type, ServiceSidType y RequiredPrivileges.

Esto por supuesto, abría de nuevo la esperanza de solucionar el problema.

La solución

Ya sabía la causa, y como en la mayoría de las ocasiones, probáblemente el volver a importar estos valores o bien a crearlos me podría solventar el problema.

Lo que hice sin embargo, fue exportar toda la clave de:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesmsiserver

A continuación, la pasé al equipo que presentaba los problemas, la ejecuté, la importé y como el error persistía, procedí a reiniciar el equipo.

Después del reinicio, intenté ejecutar el paquete de instalación y ¡Problema solucionado! Bastaba con reiniciar para que el Servicio se volviera a registrar e hiciera el trabajo que le correspondía al momento de su llamado.

La razón por la que detallara tan rápido la solución es que aproveché este inconveniente también para automatizar el proceso.

Para las personas que vean este artículo entonces y tengan este mismo problema, les dejo dos alternativas:

Solución automática: Presentando FixMSI

image

FixMSI, es una pequeña aplicación que he desarrollado utilizando la API de Windows, utiliza las función RegKeyCreateKeyEx para crear el valor de msiserver en la ubicación correspondiente y luego hace uso de la función RegSetValueEx para establecer todos los valores correspondientes y que requiere el Servicio de Windows Installer para funcionar.

Por último, FixMSI reinicia el equipo para que todos los cambios surtan efecto y que cualquier paquete (.MSI) se pueda instalar sin obtener el error.

Este proceso es totalmente transparente para el que ejecute FixMSI, sólo se verá la pantalla de confirmación y la de posterior aviso de reinicio:

FixMSI1

image

*Nota: FixMSI incluye un manifiesto para solicitar la elevación de permisos si está activo el Control de Cuentas de Usuario (UAC).

Pueden descargar FixMSI desde aquí:


Solución manual: Importando Registro

El método anterior es el que personalmente recomiendo porque como ven, es sólo aceptar el mensaje y la aplicación hará el resto de una forma rápida y segura.

Si no llega a funcionar, pueden bajar e importar el archivo de Registro original del Servicio de Windows Installer desde aquí:

Después de esto, reinician manualmente y deberían poder realizar las instalaciones sin problemas.

Espero que esto les pueda servir de ayuda.

Los que prueben FixMSI, les agradecería que me entregaran el feedback comentando en este post para saber si efectivamente les solucionó este problema.

¡Muchas gracias!

Saludos,

Checho