Como posso criar links simbólicos no Windows 8.1 sem um prompt de comando do administrador?

7

Espero que alguém possa me corrigir onde estou dando errado ao tentar criar um link simbólico no Windows 8.1 sem precisar executar o cmd.exe como administrador.

Sempre que tento criar um link simbólico a partir de um prompt de comando normal, recebo a resposta normal de permissões ...

C:\Users\MyUser>mklink symlink.txt mytextfile.txt
You do not have sufficient privilege to perform this operation.

... e funciona a partir de um prompt de comando do administrador (como esperado) ...

C:\Users\MyUser>mklink symlink.txt mytextfile.txt
symbolic link created for symlink.txt <<===>> mytextfile.txt

No entanto, não parece que nenhuma das correções usuais esteja funcionando no Windows 8.1 (pelo menos, as correções que eu encontrei).

Eu tentei seguir a resposta para , mas parece não ter efeito.

Eu também tenho o UAC definido como seu nível mais baixo.

Há mais alguma coisa que esteja faltando?

    
por Karl Nicoll 13.11.2014 / 14:48

1 resposta

8

Privilégio ausente no token "filtrado"

Desabilite o UAC. Ou com o UAC ativado: depois de ativar SECreateSymbolicLinkPrivilege , tente com uma conta não administrador .

Explicação
É pegar 17. De como eu li a documentação do MS.

Se você tiver um grupo de administradores conhecido na lista negra em sua conta de usuário, um segundo token não elevado será criado.

O SeCreateSymbolicLinkPrivilege relevante é filtrado quando o token não elevado é gerado a partir do token elevado.

Do MSDN: isolamento de privilégios de interface de usuário (UIPI) :

Windows will create two access tokens for the user if either of the following is true: The user's account contains any of the following RIDs.
DOMAIN_GROUP_RID_ADMINS
[...]
What privileges the filtered token contain are based on whether the original token contained any of the restricted RIDS listed above. If any of the restricted RIDs were in the token, all of the privileges are removed except:
SeChangeNotifyPrivilege
SeShutdownPrivilege
SeUndockPrivilege
SeReserveProcessorPrivilege
SeTimeZonePrivilege

Portanto, a solução é desativar totalmente a segunda geração de tokens. Quer removendo todos os grupos mencionados da sua conta ou desativando completamente o UAC.

(Aviso: Paul Betts fez o trabalho. Acabei de adicionar alguns detalhes. Veja a resposta dele aqui: link )

    
por 13.11.2014 / 15:33