O truque aqui é o Controle de Conta de Usuário. Todo programa é executado sob uma conta de usuário, mas mais especificamente um token . Cada token contém um identificador de segurança (SID, basicamente, um ID do usuário), uma lista de grupos dos quais o usuário é membro e quais privilégios estão ativados no momento. O UAC garante que determinadas associações de grupo não estejam ativas o tempo todo; isso protege a máquina de ações administrativas acidentais (digamos, de um cavalo de tróia). Execute whoami /all
para ver o conteúdo completo de um token.
Se você executar esse comando como administrador a partir de um prompt de comando não elevado, verá que é um membro do grupo Administradores local, mas essa associação é "usada apenas para negação" - programas executados sob esse token don ' t realmente tem poder administrativo. O grupo de administradores do domínio, bem como alguns outros importantes (por exemplo, operadores de backup) estão sujeitos a essa verificação. "Permitir" entradas da ACL que se referem a esses grupos não serão aplicadas, a menos que o usuário seja elevado. (Tente whoami /all
em um prompt de administrador - todos os membros do grupo e uma série de privilégios estão habilitados.)
Quando você assume o controle de uma pasta, usa seu administrativo SeRestorePrivilege
("Restaurar arquivos e diretórios", que permite escrever qualquer coisa, incluindo ACLs em qualquer arquivo) para adicionar uma entrada "permitir" Controle total para sua conta para o ACL. Uma vez que o seu SID nunca está sujeito à remoção de tokens do UAC, todos os programas em execução poderão exercer esse controle.
Se você tentou acessar essa pasta (antes de adicionar a ACE específica) com um programa elevado - digamos, explorer.exe
executando como admin ou um prompt de administração - você teria obtido êxito. Desativar o UAC (não recomendado) resultaria em todos os programas em execução, já que você tem todo o seu acesso o tempo todo.