AddThis Feed Button
AddThis Social Bookmark Button
IMGP1165
IMGP1166
IMGP1143
IMGP1144
IMGP1145
IMGP1146
IMGP1147
IMGP1148
IMGP1149
IMGP1150
Categories

This Month Last Year

Julio 2008
L M X J V S D
« Jun «-»  
 123456
78910111213
14151617181920
21222324252627
28293031  
links
16
Sep

Secretos del Autorun.inf

Todos somos conscientes de esos CDS que nada mas meterlos en la Unidad de CD inician automáticamente alguna aplicación. Pero ¿Cómo lo hacen? He aquí la respuesta, el archivo “Autorun.inf”

El archivo en cuestión es un archivo de texto en el raíz del disco (también se puede usar para lápices USB, discos duros etc). Dentro de esta archivo de texto hay unas instrucciones que usa el Windows (desde Windows 95) para hacer lo que le digamos.
La primera línea del archivo contiene el texto “[Autorun]” que define una sección del archivo. Para aquellos que sepan un poco, tiene la misma estructura que los típicos archivos ini, donde por cada línea tenemos un par “Clave=valor” y que se pueden dividir en secciones de claves  y valores con una línea “[NombreSeccion]”

Bien empecemos a ver los diferentes elementos que podemos tener, los dos mas típicos son “Icon” y “Open”.

La clave “Icon” indica la ruta al icono que aparecerá en lugar del típico icono de CD al insertarlo en la unidad, por supuesto la ruta al icono ha de ser relativa al lugar donde se encuentra el Archivo “Autorun.inf” puesto que no sabemos en que letra de unidad estará en CD en otros equipos. El Valor de la clave Icon puede ser un icono suelto, Ej.: “Icon=carpeta\miicono.ico”, o un icono dentro de un ejecutable, para ello después de la ruta al ejecutable especificaremos el icono que queremos usar, ya que un ejecutable puede contener mas de un icono, empezando por el 0 para el primer icono, Ej.: “Icon=carpeta\miexe.exe,0” esto especificaría el primer icono contenido dentro del ejecutable (0 es el icono por defecto).

La clave “open” es mas simple aun, y con las mismas condiciones de ruta que la "Icon" especifica la ruta a el ejecutable que queremos que se inicie al insertar el disco, Este ha de ser un ejecutable (exe, com, bat, hta, cmd,…)

Bueno y ahora empezamos con las claves menos conocidas, no la voy a poner todas pero si las que puedan ser mas útiles.

“UseAutoPlay”, sobre esta clave no he encontrado demasiada información para complementar, solo decir q toma los valores 0 o 1 y solo se reconoce en Windows XP o superior. Si se establece a 1, se usan las opciones de Autoplay V2, si es 0 no se usan tales opciones. No he encontrado mucha documentación sobre el tema, pero según la MSDN (que dice mas bien poco) tiene que ver con las nuevas opciones de auto detección de Windows XP (eso que te escanea el disco y escoge con que abrirlo o te muestra una lista)
 

“Shell” esta parámetro es un poco mas complicado, se trata de un sistema para establecer Verbos en el menú contextual del Disco (ya había hablado en un post anterior sobre los Verbos). Su primer uso es “Shell=Verbo” para establecer el Verbo por defecto del menú contextual.
Pero además podemos definir nuestros propios verbos, para definir los verbos tendremos que usar 2 líneas, una para definir la etiqueta asociada al Verbo en el menú contextual y otra para el comando que ejecutara dicho verbo. Para definir el Verbo se hará de la forma “Shell\NombreVerbo”, el nombre del verbo ha de ser único (no podemos tener 2 verbos iguales)  y no puede contener espacios, acentos, ni otros caracteres especiales.

 

Ej:
Shell\AbrirNotepad=Abrir con el Notepad
Shell\AbrirNotepad\command=Notepad mitexto.txt

En estas líneas vemos que primero definimos el nombre que tendrá en el menú contextual y después con el añadido “\command” especificamos el comando a ejecutar para ese verbo. Podemos usar “&” para definir una tecla para el menú contextual (la típica letra subrayada de los menús a la que podemos acceder con ALT+<letra>). Para ello solo debemos poner “&” delante de la letra de la etiqueta que queramos usar.

 

Ej
Shell\AbrirNotepad=A&brir con el Notepad

Esto hará que ALT+b  ejecute la operación de abrir con el Notepad.

Y por ultimo tenemos una Sección nueva, solo soportada por Windows XP o superiores.
Se trata de la sección “[DeviceInstall]” , esta nos permitirá especificar carpetas en las cuales se encuentran Drivers dentro de nuestro CD, de forma que el método “Buscar en unidades” del asistente búsqueda de nuevo hardware solo buscara en las carpetas que definamos, ignorando carpetas que sabemos que no contienen archivos útiles para la herramienta y haciendo la búsqueda mas rápida. Su uso es muy simple, solo hemos de poner un par clave=valor con la Clave “DriverPath” y como valor la ruta relativa en el CD para cada carpeta que queremos que examine.
Si no existe la sección DeviceInstall, el Asistente de hardware buscara en todo el disco, lo que puede ralentizar mucho en unidades con estructuras complejas (muchas carpetas y archivos)


13
Sep

Usar process para abrir documentos,imprimir,lanzar una url…

 En el .NET Framework tenemos una clase “System.Diagnostics.Process” que nos permite realizar operaciones con procesos. Una de sus utilidades puede ser realizar una acción sobre un documento, url,…

Las acciones que podemos realizar sobre el objeto vienen determinadas por los verbos que tenga. Un verbo es cada una de las acciones que se pueden realizar sobre un tipo de objeto. Por ejemplo un archivo de bloc de notas (txt) tendrá los verbos “Open”y “Print”, podemos comprobar si damos botón derecho en un archivo txt como tiene esas opciones, cada una de las opciones que tiene es un verbo, que puede ser propio del bloc de notas o de otra aplicación que tengamos instalada. Podemos tener por ejemplo para un archivo txt en verbo “PrintPDF” de una aplicación de impresión a PDF que este asociada con el documento.

Para saber los verbos de un archivo deberemos mirar en la propiedad StartInfo , que es un objeto de tipo ProcessStartInfo, la propiedad verbs, que es un array de Verbos admitidos para el archivo que pasamos como parámetro al crear el Process.

  1. Dim myProcess As New Process()
  2. myProcess.StartInfo.FileName = "http://www.dubasdey.com"
  3. myProcess.StartInfo.Verb = "Open"
  4. myProcess.Start()

 

 

En las propiedades de inicio también podremos realizar otros ajustes, como redireccionar la salida de errores, la entrada estándar (para insertar datos desde nuestra aplicación) o la salida estándar.

Cambiar el usuario que ejecutara la aplicación (si el usuario tienen password también habrá que dárselo)

Y para finalizar solo hay que iniciar el proceso con Star().