domingo, 11 de marzo de 2007
Nombres de las carpetas en Windows Vista y compatibilidad con XP (Juntion Points)
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)
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
Buscando buscando, he aprendido algunas cosas interesantes sobre los drivers en vista.
- ¿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?
- ¿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
Recomendaciones para ejecutar el eMule en Windows Vista.
Recorriendo varios foros, y con la inestimable ayuda de Google (G en adelante), encontré algunas de las recomendaciones a aplicar.
- 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.
- 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
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.