Ejecutar aplicaciones como administrador y cambiar permisos desde el CMD de Windows

Este artículo trata acerca de lanzar una aplicación gráfica con permisos de administrador desde el intérprete de comandos CMD de Windows con el comando runas, y sobre cómo cambiar los permisos de acceso y de ejecución de un archivo y/o aplicación desde el CMD utilizando el comando cacls.

Si bien no es muy común utilizar estas opciones, las documento justamente porque alguna vez me sirvieron.

Pero vayamos al caso en donde me fue útil esta funcionalidad, se presentó una situación en la que tenía que cambiar los permisos de ejecución de una aplicación instalada en un equipo con el sistema operativo Windows 7, y como solo tenía acceso al escritorio de un usuario de sistema operativo limitado (sin permisos de administrador) tuve que ver la forma de solucionarlo. En aquel entonces lo solucioné desde el CMD (seguro que había una forma más simple y sencilla de hacerlo) y estos fueron los pasos que seguí:
  1. Lo primero que realicé fue ejecutar el cmd desde el menú inicio del usuario con accesos limitados, y utilizando el comando runas le indiqué que quería ejecutar nuevamente la aplicación cmd pero con el usuario administrador del sistema operativo:
    C:\Archivos de programa>runas /user:administrador cmd
    Escriba la contraseña para administrador: -aquí especificamos la contraseña-
    Intentando iniciar cmd como usuario "MIEQUIPO\administrador" ...
    La ejecución de anterior desplegará otra ventana CMD totalmente nueva e independiente, pero ya con todos los permisos propios del administrador del sistema.

  2. Teniendo una ventana cmd con permisos de administrador procedí a modificar el nivel de acceso sobre el directorio de instalación de una aplicación a la que todos los usuarios limitados del sistema operativo debían tener control total. Para realizar esta tarea utilicé el comando cacls que hoy en día está obsoleto pero que de igual manera sigue funcionando:
    C:\WINDOWS\system32>cacls "c:\Archivos de programa\Carpeta_Aplicacion" /T /E /P Todos:F
    Para comprender que funciones cumplen cada uno de los argumentos que se le pasan al comando cacls pueden consultar su ayuda, de la cual va un fragmento a continuación:
    C:\>cacls /?

    NOTA: el comando Cacls está obsoleto, use Icacls.

    Muestra o modifica listas de control de acceso (ACL) de archivos

    CACLS archivo [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G usuario:perm]
    [/R usuario [...]] [/P usuario:perm [...]] [/D usuario [...]]

    archivo Muestra las ACL.
    /T Cambia las ACL de archivos especificados en
    el directorio actual y todos los subdirectorios.
    /L Trabaja en el propio vínculo simbólico en lugar del destino.
    /M Cambia las ACL de los volúmenes montados en un directorio.
    /S Muestra la cadena SDDL para la DACL.
    /S:SDDL Reemplaza las ACL por las especificadas en la cadena SDDL
    (no válido con /E, /G, /R, /P ni /D).
    /E Edita la ACL en vez de remplazarla.
    /C Continúa, omitiendo los errores de acceso denegado.
    /G usuario:perm Concede derechos de acceso del usuario.
    Perm puede ser: R Leer
    W Escribir
    C Cambiar (escribir)
    F Control total
    /R usuario Revoca derechos del usuario (sólo válida con /E).
    /P usuario:perm Reemplaza derechos de acceso del usuario.
    Perm puede ser: N Ninguno
    R Leer
    W Escribir
    C Cambiar (escribir)
    F Control total
    /D usuario Deniega acceso al usuario especificado.
  3. Sin embargo, ahora que lo pienso bien podría haber realizado algo más sencillo que usar el comando cacls para cambiar los permisos de la aplicación (o Icacls como me recomienda Windows), simplemente podría haber ejecutado el siguiente comando:
    C:\Archivos de programa>runas /user:administrador explorer
    Escriba la contraseña para administrador:
    Intentando iniciar explorer como usuario "MIEQUIPO\administrador" ...
    Con el cual me hubiese desplegado el explorador de Windows con permisos de administrador, mediante el cual el cambio de permiso hubiese sido totalmente gráfico. Esto me hubiese ahorrado todo el trabajo de investigación sobre el uso del comando cacls, pero bueno, la lamparita no siempre se prende en el momento indicado, y a veces por buenas razones, al menos aprendí a usar un comando obsoleto.

Comentarios