domingo, 11 de marzo de 2007

Nombres de las carpetas en Windows Vista y compatibilidad con XP (Juntion Points)

¿Porqué si navegamos con el explorador de Windows Vista nos aparecen las carpetas “Archivos de Programa”, “Usuarios” y sin embargo si usamos la línea de comandos estas carpetas se llaman “Program Files” y “Users”? ¿Por qué ocurre lo mismo dentro de nuestro perfil con “Documentos”, “Imágenes”, etc.?

La solución parecía sencilla ya con XP, porque lo que hacen los señores de Microsoft es añadir un fichero oculto dentro de cada directorio denominado “desktop.ini” y lo utilizan para fijar el parámetro “LocalizedResourceName” adecuadamente.

Sin embargo con Vista van más allá, porque desde la línea de comandos yo puedo hacer “cd Program Files” y “cd Archivos de Programa” y termino en el mismo sitio, y además, la instalación de programas, que por defecto van a “Program Files” terminan con el programa en “Archivos de Programa”. ¿Qué está pasando?

Lo que han hecho con Windows Vista para evitar este problema es usar Juntion Points (es una característica de NTFS 5.0). Los Junction Points (JP en adelante) son enlaces que apuntan a otra parte del disco duro. Por ejemplo, los perfiles de usuario en Windows Vista se almacenan ahora en el directorio “c:\users”, pero existe un JP llamado “c:\documents and settings” para que los programas que buscan ese directorio vayan al sitio adecuado.

¿Cómo se visualizan los JP? Los JPs que creemos nosotros son visibles directamente con el explorador de Windows o desde la línea de comandos, pero a los que vienen con el sistema les han cambiado los atributos, de manera que el grupo “Todos” tiene el atributo “Read” denegado (de hecho, si intentamos abrir un JP desde el explorador nos da un error). Para verlos desde el explorador hay que pedir que nos muestre los archivos ocultos, y desde la línea de comandos se pueden ver con el comando “dir /aL”.

¿Cómo se crea un JP? Con la utilidad mklink “mklink /j vínculo destino”.

¿Cómo elimino los JP? Muy importante, si eliminamos un directorio que contiene un JP con algún comando recursivo, se borrará el contenido del destino del JP. Para borrar sólo el JP basta con usar el comando “rd”, como si de un directorio se tratara.

Por cierto, los JPs son antiguos (NTFS 5.0 está disponible con Windows 2000), y ahora con vista se han mejorado con los “Symbolic Link” (se crean también con mklink, pero con el parámetro /d), que mejoran por ejemplo el borrado recursivo (Vista se da cuenta y borra el enlace, pero no el original, y que pueden apuntar a un fichero).

Por cierto, la creación de JPs y Symbolic links requiere privilegios de administrador.

Enlaces Interesantes:

domingo, 4 de marzo de 2007

La madre de todas las impresoras (Core Drivers)

Otro de los problemas que me he encontrado, configurar mi impresora HP Deskjet 845c en Windows Vista. Además, parece que no soy el primero que se encuentra este problema (ver http://www.eggheadcafe.com/software/aspnet/29342928/missing-drivers.aspx).

El problema es que HP dice que no pone drivers a disposición del público porque los drivers están incluidos en Windows Vista (y es verdad, están en %systemroot%\system32\driverstore\filerepository\prnhp001.inf_5641fa75), pero al intentar instalar el driver que viene con Vista el sistema dice que no encuentra un "Core Program".

Tras varias investigaciones me he encontrado que con windows Vista un driver puede depender de otro que se llama "Core Driver" y que han cambiado algo la forma de empaquetar los drivers "Package aware drivers".

Tras mirar el fichero del driver de la impresora HP "prnhp001.Inf" he encontrado que el driver de esta impresora depende de dos "Core Drivers", el UNIDRV y el sRGBPROFILE.OEM. He encontrado que estos "Core Drivers" los instala el fichero de impresoras genérico de Microsoft "driverstore\filerepository\ntprint.inf_a6d3ccdf\ntprint.inf".

Mirando un poco dentro de estos dos ficheros me he encontrado los GUID de ambos "Core Drivers" {D20EA372-DD35-4950-9ED8-A6335AFE79F0} y ...F3}. Resulta que mirando un poquito en el registro me encontré que en la rama "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\PackageInstallation\Windows NT x86\CorePrinterDrivers" existía otra rama con la clave terminada en F0} (que es la del UNIDRV) y otra terminada en F5} (que es la del XPSDRV)pero no había una para la clave terminada en F3, así que con un par lo que he hecho para engañar a Windows es exportar la clave del registro de uno de estos GUIDS, cambiar el GUID para que terminara en F3 e importarla.

El fichero .reg es el siguiente:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\PackageInstallation\Windows NT x86\CorePrinterDrivers\{D20EA372-DD35-4950-9ED8-A6335AFE79F3}]
"InfPath"="C:\\Windows\\System32\\DriverStore\\FileRepository\\ntprint.inf_a6d3ccdf\\ntprint.inf"
"DriverDate"="06/21/2006""DriverVersion"="6.0.6000.16386"

Una vez aplicado el "parche", pido a Windows que reinstale el driver de la impresora y voila... Todo resuelto, no sólo eso, ahora en "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\PackageInstallation\Windows NT x86\CorePrinterDrivers" aparecen 5 entradas desde ...F0} hasta ...F5}.

Un par de enlaces interesantes son:

sábado, 3 de marzo de 2007

Funcionamiento de los Drivers en Vista

Estoy teniendo un problema bastante gordo (creo que desde que intenté instalar un driver de un dongle bluetooth muy antiguo, pero no estoy muy seguro) que no me permite instalar nuevos dispositivos (ni siquiera un memory stick usb), pero antes de utilizar la opción del punto de restauración (es para cobardes) voy a investigar un poco.

Buscando buscando, he aprendido algunas cosas interesantes sobre los drivers en vista.



  1. ¿Sabíais que en Windows Vista hay un directorio "%systemroot%\system32\driverstore" que contiene todos los drivers "confiables" que son los que Vista instalará de forma automática?
  2. ¿Sabíais que si ponemos un driver ahí (por ejemplo el de una impresora), un usuario estándar podrá instalarlo de forma automática cuando conecte el dispositivo? Esto en XP no funcionaba.

Lo que he encontrado de momento es que mi Windows Vista no encontraba los drivers que estan en el "DriverStore", por lo que no podía instalar los drivers que vienen con Vista por defecto. Así que una solución temporal ha sido editar la entrada de registro "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\DevicePath" y le he puesto el valor "%SystemRoot%\inf; %SystemRoot%\system32\driverstore", cuando antes estaba sólo apuntando a "%systemroot%\inf".

Con este parche ahora windows encuentra los drivers siempre cuando le digo que busque en el PC, pero no lo hace de forma automática (con los memory stick solía ser así)... Seguiré investigando.

Dos documentos muy interesantes (especialmente orientados a Impresoras) son:

http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/PRI050_WH06.ppt

http://www.microsoft.com/whdc/xps/pkginstall.mspx

Recomendaciones para ejecutar el eMule en Windows Vista.

Uno de los primeros retos que me planteé con mi nuevo equipo (Windows Vista Ultimate preinstalado) fue la instalación del eMule.

Recorriendo varios foros, y con la inestimable ayuda de Google (G en adelante), encontré algunas de las recomendaciones a aplicar.

  1. Debido al UAC de Windows Vista (tema que trataremos en otro post seguramente), es preferible instalar eMule en un directorio que se encuentre fuera de "C:\Program Files" (este es el verdadero nombre del directorio independientemente del idioma en Vista), por ejemplo en c:\emule.
  2. En Windows Vista hay que modificar dos settings de eMule, que se encuentran en "Opciones Adicionales", se llaman "Máximas conexiones a medio abrir" y "Nuevas conexiones max./5s". En ambos casos se recomienda fijar el valor a 9.

http://www.emule-project.net/home/perl/news.cgi??l=1

Declaración de Intenciones

¿Para qué crear este blog? En realidad el objetivo es recopilar todos los problemillas (a ser posible con sus soluciones), cosas curiosas, recopilación de informaciones, etc. con que nos vayamos tropezando con Windows Vista y otros productos software/hardware relacionados.

No sé si seré coherente en el contenido, ni siquiera si seré constante en el intento, pero espero que sí, a ver que tal va.

Revisión 2011: Aunque el blog no ha estado muy actualizado, dado que últimamente me estoy metiendo en muchos "fregaos" con equipos de Apple, voy a intentar relanzarlo un poco.