2010-08-04 13:49:40 +0000 2010-08-04 13:49:40 +0000
128
128
Advertisement

¿Forzar un programa para que se ejecute *sin* privilegios de administrador o UAC?

Advertisement

¿Hay alguna forma de forzar un programa que normalmente requiere privilegios de administrador (a través de UAC) para que se ejecute sin ellos? (es decir: sin UAC y sin acceso a todo el sistema.)

Añadido: Sin modificar el propio ejecutable.

  • *

A pesar de la respuesta de James, he encontrado algunas maneras de que se pueda casi hacer:

  1. Modificando el ejecutable puedo eliminar la entrada trustInfo del manifiesto (o el manifiesto entero, para poder usar uno externo), permitiendo que el programa se inicie sin UAC. Desafortunadamente esto modifica el ejecutable, por lo que sale poco después debido a una prueba de suma de comprobación interna.
  2. Usando el Explorador de Procesos puedo lanzarlo como un Usuario Limitado. Sin embargo, esto parece limitarlo significativamente más de lo que me gustaría (se ejecuta como el IE de Modo Protegido y por lo tanto puede acceder significativamente menos de lo que puede hacer mi usuario estándar no elevado).
Advertisement
Advertisement

Respuestas (9)

76
76
76
2012-07-18 15:20:44 +0000
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Guarda este texto en <name_of_file>.reg y añádelo al Registro de Windows. (Hacer doble clic en él debería servir.)

Después, haga clic con el botón derecho del ratón en la aplicación que desea ejecutar sin privilegios administrativos y seleccione “Ejecutar sin elevación de privilegios”.

En algunos casos - pequeña cantidad 0,1% de los programas pueden preguntar dos veces sobre el aviso de UAC.

57
57
57
2015-10-02 11:27:02 +0000

Guardar en nonadmin.bat:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Ahora puede arrastrar y soltar programas a esto para ejecutarlos sin necesidad de administrador.

Esto no requiere privilegios de administrador ya que cambiar esa clave de registro sí. Además, no desordena el menú contextual.

Basado en la respuesta

  • *

Actualizar: Ahora debería funcionar con programas que tengan espacios en el nombre también.

35
Advertisement
35
35
2012-01-05 08:15:03 +0000
Advertisement

Espero no llegar demasiado tarde a la fiesta, pero estaba buscando una pregunta similar y sin ver una respuesta aquí descubrí que el comando RunAs incorporado en Windows, cuando se ejecuta como administrador, puede hacerlo con el interruptor /trustlevel.

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel <Level> should be one of levels enumerated
                  in /showtrustlevels.

Esto funcionó en mi caso. Irónicamente, iniciar un programa explícitamente sin elevación requiere un símbolo de comando elevado. Vaya figura. :) Espero que te ayude.

19
19
19
2016-09-09 20:16:13 +0000

Si tienes una aplicación en particular que quieres ejecutar siempre sin UAC, puedes dirigirla con el Registro (añade el texto a un archivo REG e impórtalo al Registro):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\example\application.exe"="RunAsInvoker"

A diferencia de esta respuesta , esta solución no requiere ningún clic alternativo o cambio en la interacción con el usuario.

Microsoft llama a este proceso añadiendo el RunAsInvoker “Compatibility Shim” .

4
Advertisement
4
4
2019-01-25 11:54:23 +0000
Advertisement

Si se trata de un archivo de configuración (instalación) exe que requiere privilegios de administración, hay un truco para ejecutarlo sin acceso elevado:

Si el nombre del archivo contiene palabras como setup o install windows lo ejecuta a la fuerza con acceso elevado aunque no necesite acceso elevado:

Si el archivo . exe tiene un manifiesto, estas heurísticas de elevación no se aplican.

Por ejemplo, si el manifiesto indica que el exe no necesita elevación, incluso incluir cualquiera de estas palabras en el nombre del archivo no hará que se ejecute como elevado.

Otra palabra clave es patch, tal como lo indica Mgamerz en los comentarios.

Esto está documentado en los documentos de UAC (Control de Cuentas de Usuario):

La detección del instalador detecta los archivos de configuración, lo que ayuda a evitar que las instalaciones se ejecuten sin el conocimiento y consentimiento del usuario.

La detección del instalador sólo se aplica a:

  • Archivos ejecutables de 32 bits.

  • Aplicaciones sin un atributo de nivel de ejecución solicitado.

  • Procesos interactivos que se ejecutan como un usuario estándar con UAC habilitado.

Antes de crear un proceso de 32 bits, se comprueban los siguientes atributos para determinar si se trata de un instalador:

  • El nombre del archivo incluye palabras clave como “install”, “setup” o “update”.

Modo de lectura aquí: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works

3
3
3
2011-05-18 01:05:06 +0000

Resolví este problema hoy usando el kit de herramientas de personalización de aplicaciones de MS.

Seguí las instrucciones en un artículo de tech republic .

Básicamente:

1) Obtienes el kit de herramientas de MS aquí .

2) Haz clic en Arreglar

3) Elige la opción RunAsInvoker

4) Haz clic con el botón derecho del ratón en el arreglo y elige Instalar

2
Advertisement
2
2
2013-07-21 02:56:41 +0000
Advertisement

Mientras que en su pregunta Andrew declaró que lo siguiente no funcionaba del todo:

Modificando el ejecutable puedo eliminar la entrada trustInfo del manifiesto (o el manifiesto entero, para poder usar uno externo), permitiendo que el programa se inicie sin UAC. Desafortunadamente esto modifica el ejecutable, por lo que sale poco después debido a una prueba de suma de comprobación interna.

Pude modificar un archivo .manifest externo para el software que estaba usando y cambiar

<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

a

<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />

Resulta que el software que estaba usando no requería realmente derechos de administrador, por lo que pude ejecutarlo en una cuenta de Usuario Estándar sin UAC o contraseñas de administrador. Gracias.

-2
-2
-2
2012-04-20 04:28:43 +0000

Arreglé este problema cambiando los permisos de la carpeta que contenía el programa.

Añadí cada usuario que ejecutará ese programa y les di privilegios de “control total”. Eso solucionó el problema y dejé la opción “Ejecutar como administrador” sin marcar.

No tengo ningún problema de seguridad para los usuarios que ejecutarán el programa.

-5
Advertisement
-5
-5
2010-08-04 14:09:46 +0000
Advertisement

No, si un programa requiere UAC entonces está tratando de acceder a algo fuera de su caja de arena. El programa no se ejecutará correctamente sin el acceso elevado.

Si sólo quiere deshacerse de la notificación, puede deshabilitar UAC.

Deshabilitar UAC en Windows Vista: Inicie, escriba “usuario”. Haga clic en “Cuentas de usuario”. En la ventana que aparece, haga clic en “Configuración de control de cuentas de usuario” y luego en Desactivar UAC.

Desactivar UAC en Windows 7: Inicio, escriba “usuario”. Haga clic en “Configuración de control de cuentas de usuario”. Arrastra la barra de opciones hasta la parte inferior para “Notificar nunca”.

Advertisement
Advertisement