Prepara tu línea de comandos

Hola a tod@s!


Si mis cálculos no me fallan, llevamos más de 1 año escribiendo sobre Windows Vista, y se han hablado de muchísimas tecnologías y novedades que nos trae este sistema operativo. Repasando los post que hemos estado escribiendo en estos últimos meses me he dado cuenta de que no se ha escrito nada de uno de los protagonistas de Windows. La línea de comandos. Así que le voy a dedicar un buen número de Posts a la línea de comandos, ya que Windows es administrable tanto por entorno gráfico como por línea de comandos, e inclusive, en ciertos escenarios, sólo es administrable bajo esto último. Así que es hora de darle un rinconcito a la línea de comandos, o comúnmente llamada Shell aquí en el blog.


Y qué mejor presentación de la línea de comandos que preparando el entorno para futuros posts? Pues vamos a ello!


Una de las cosas que se echan de menos en Windows es poder abrir una Shell de comandos directamente en una carpeta. Existe una PowerToy que realiza este trabajo, la llamada CmdHere.exe.


http://www.microsoft.com/spain/windowsxp/downloads/powertoys/xppowertoys.mspx


Nosotros vamos a realizar lo mismo que una powertoy, pero a nivel de registro, es decir,  lo vamos a realizar modificando opciones e ingresando claves en el registro de Windows. Así podréis ver lo fácil que es modificar comportamientos de Windows a través de modificar estructuras de registro.


Primero añadiremos una entrada para la Shell de Windows (CMD.EXE) y para la PowerShell.


Lo primero que  tenemos que realizar es un cuadro sobre lo que queremos que realice Windows Vista. Así que propondremos lo siguiente:




  •       Nombre que voy a utilizar


  •       Qué quiero lanzar


  •       Cómo lo quiero lanzar


  •       La aplicación admite variables?

Y las respuestas que obtengo son las siguientes:




  •       Nombre: ShellSilverhack


  •       Cmd.exe


  •       Lo quiero lanzar sobre un determinado directorio


  •       La aplicación lo permite

Lo siguiente que tenemos que hacer es ver en qué parte del registro de Windows podemos realizar estos cambios de comportamiento. El sitio más indicado para hacerlo, es añadir una clave a la parte del registro encargada de mantener actualizada los objetos y aplicaciones del sistema operativo. En nuestro caso, y sabiendo cómo funciona el registro de Windows, el encargado de realizar ésta y otras muchas tareas es la clave siguiente:


HKEY_CLASSES_ROOT


Esta clave, es la encargada de mantener lo siguiente:




  •       Asociaciones de archivos


  •       Referenciar objetos del propio sistema


  •       Iconos asociados


  •       Etc….

Este directorio no es un directorio común, como sí lo puede ser HKEY_LOCAL_MACHINE por ejemplo. Este directorio es un acceso directo de la clave siguiente:


HKEY_LOCAL_MACHINESOFTWAREClasses


Si modificamos algo en una de ellas, la otra automáticamente aplicará el cambio.


Como vamos a aplicarlo sobre un directorio específico, procederemos a introducir la nueva clave dentro del directorio siguiente:


HKEY_CLASSES_ROOTFolder


Y dentro de este directorio, el comportamiento que vamos a modificar es el de la entrada al directorio, es decir, vamos a decirle a Windows Vista que queremos entrar dentro de ese directorio de otra forma. Para ello, modificaremos el comportamiento de la clave siguiente:


HKEY_CLASSES_ROOTFoldershell


Dentro de esa clave, cuelgan dos más. Una de ellas es para explorar el documento, y la otra es para abrir el documento.



Para modificar el comportamiento nos crearemos una nueva clave, que será el nombre que nosotros queramos. Para ello, pulsaremos con el botón derecho del ratón en el directorio shell y crearemos una nueva clave.


Una vez creado el directorio con un nombre asociado a la tarea, lo siguiente es dotar a ese directorio de una acción. Para ello, crearemos otro directorio (botón derecho sobre el directorio nuevo y pulsar nueva clave) justamente dentro del siguiente, es decir, un subdirectorio. Este subdirectorio llevará el nombre de command y no se puede modificar ni llevar otro nombre diferente.


Una vez creado este directorio command lo siguiente a realizar es escribir la acción que va a tomar esa pestaña.


Para la shell por defecto (cmd.exe)


cmd.exe cd “%1” (los espacios son importantes)


Para PowerShell“C:WINDOWSsystem32windowspowershellv1.0powershell.exe” -NoExit cd “%1”

En PowerShell difiere el comando ya que tenemos que decirle que no termine el proceso cuando lo iniciemos. Es por ello que necesitamos el parámetro NoExit.


Una vez hayamos terminado de escribir las claves necesarias tanto para el intérprete de comandos como para la PowerShell, podremos ver el progreso pinchando en un directorio cualquiera con el botón derecho del ratón.



 


Si necesitáis algo más rápido, y sin necesidad de instalar nada, podéis copiar estas entradas de registro y guardarlas como InstalaCMD.reg. Doble clic sobre el archivo, y estarán instaladas.


——————————————-No copies esta línea—————————————————

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOTFoldershellShellSilverhack][HKEY_CLASSES_ROOTFoldershellPowerShellSilverhack] [HKEY_CLASSES_ROOTFoldershellShellSilverhackcommand]@=”cmd.exe /K cd “%1″”[HKEY_CLASSES_ROOTFoldershellPowerShellSilverhackcommand]@=””C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe” -NoExit cd “%1″” ———————————————-No copies esta línea———————————————————–

Otra curiosidad, es la de poder ejecutar un intérprete de comandos o una Shell de PowerShell con privilegios administrativos, y que también podamos iniciarlas desde el botón derecho del ratón, ya que puede haber ocasiones en las que tengamos que utilizar una Shell con dichos privilegios.


Para ello, el registro de Windows provee un nombre de clave que podemos utilizar llamado runas.



Por diseño de Windows, sólo permite un directorio runas por cada clave, así que no podremos tener los dos intérpretes como administrador, de momento….


No os perdáis la segunda parte!


Hasta pronto!


 

2 comentarios en “Prepara tu línea de comandos”

  1. Muy buenas, en w2k y xp si arrastras un fichero a la línea de comandos te pone la ruta del fichero, pero en vista ya no se puede hacer esto, ¿sabes alguna forma para configurarlo?

  2. Si quieres puedes utilizar el comando “runas” para ejecutar lo que quieras en otra clave del registro. Supongo que existirá también en Windows Vista.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *