Noté que mientras usaba pip
para instalar paquetes globalmente, la instalación falló con un error de permiso insuficiente. Cuando se ejecutaba pip
como administrador, el problema se solucionó y pip
pude escribir en mi Program Files
directorio. Se produce el mismo comportamiento al editar archivos de texto Program Files
: solo funciona si ejecuto el editor de texto como administrador.
Sin embargo, hasta donde sé, nunca he ejecutado ningún programa instalador como administrador, sin embargo, todos escribieron en mi Program Files
directorio sin ningún tipo de aviso. ¿Qué permite a estos instaladores eludir el control de seguridad?
(Tengo UAC deshabilitado, pero si esa es la causa, ¿por qué no pueden pip
y otros programas normales como los editores de texto escriben en el Program Files
directorio?)
fuente
Setup
, debería ejecutarse como administrador.Respuestas:
Cuando el control deslizante UAC esté completamente hacia abajo, los programas que soliciten elevación se aprobarán automáticamente. Eso es distinto de todos los programas que se elevan todo el tiempo (que es efectivamente lo que obtienes si desactivas completamente UAC , lo que rompería las cosas).
Los programas pueden especificar su comportamiento de elevación en su manifiesto . La mayoría de los programas se ejecutan
asInvoker
, al mismo nivel que el proceso de llamada. Algunos, como el Editor del Registro y MMC, piden que se ejecute con loshighestAvailable
permisos, por lo que con UAC activado, los administradores obtendrían un mensaje de elevación, pero los usuarios normales no. Otros, como la mayoría de los programas de instalación, son completamente inútiles sin elevación y por lo tantorequireAdministrator
. Es por eso que los programas de instalación se elevan automáticamente para usted. Evidentemente,pip
no se manifiesta como requiriendo elevación. "No lo has hecho porque no lo pides".Demostración de bonificación: una manera de comenzar un programa de elevada desde la línea de comandos es PowerShell de
Start-Process
con-Verb runas
, como este:Con UAC activado, la ejecución le dará un mensaje de elevación para el símbolo del sistema. Con UAC reducido al mínimo permitido por la IU, obtienes un símbolo del sistema elevado sin diálogo de UAC. (Puede ver la diferencia en la barra de título de la ventana de comandos). Si se
-Verb runas
hubiera dejado, habría recibido un símbolo del sistema normal.fuente