Como os instaladores ignoram as permissões no Windows 10

1

Percebi que, ao usar pip para instalar pacotes globalmente, a instalação falhava com um erro de permissão insuficiente. Ao executar pip como administrador, o problema foi corrigido e pip conseguiu gravar em meu diretório Program Files . O mesmo comportamento ocorre ao editar arquivos de texto em Program Files - ele só funciona se eu executar o editor de texto como administrador.

No entanto, até onde sei, nunca executei nenhum programa de instalação como administrador, mas todos eles escreveram para o meu diretório Program Files sem nenhum tipo de prompt. O que permite que esses instaladores ignorem a verificação de segurança?

(Eu tenho o UAC desativado, mas se essa é a causa, então por que o pip e outros programas normais, como os editores de texto, não podem gravar no diretório Program Files ?)

    
por Andrew Sun 14.02.2017 / 16:05

1 resposta

2

Quando o controle deslizante do UAC estiver desativado, os programas que solicitarem a elevação serão automaticamente aprovados. Isso é diferente de todos os programas que estão sendo elevados o tempo todo (o que é efetivamente o que você obtém se você desativa completamente o UAC , o que quebraria coisas).

Os programas podem especificar o comportamento de elevação no manifesto . A maioria dos programas executa asInvoker , no mesmo nível do processo de chamada. Alguns, como o Editor do Registro e o MMC, pedem para serem executados com as permissões highestAvailable , portanto, com o UAC ativado, os administradores receberiam um prompt de elevação, mas os usuários normais não o faria. Outros, como a maioria dos programas de instalação, são completamente inúteis sem elevação e, portanto, requireAdministrator . É por isso que os programas de configuração estão aumentando automaticamente para você. Evidentemente, pip não se manifesta como exigindo elevação. "Você não tem porque você não pede."

Demonstração de bônus: uma maneira de iniciar um programa elevado a partir da linha de comando é o Start-Process com -Verb runas do PowerShell, assim:

Start-Process cmd -Verb runas

Com o UAC ativado, ele fornecerá um prompt de elevação para o prompt de comando. Com o UAC reduzido ao mínimo permitido pela interface do usuário, você obtém um prompt de comando elevado sem o diálogo UAC. (Você pode ver a diferença na barra de título da janela de comando.) Se o -Verb runas tivesse sido deixado de lado, você teria recebido um prompt de comando normal.

    
por 14.02.2017 / 18:46