Comment puis-je créer des liens symboliques dans Windows 8.1 sans invite de commande administrateur?

8

J'espère que quelqu'un pourra me corriger là où je vais mal en essayant de créer un lien symbolique dans Windows 8.1 sans avoir à exécuter cmd.exe en tant qu'administrateur.

Chaque fois que j'essaie de créer un lien symbolique à partir d'une invite de commande standard, j'obtiens la réponse des autorisations habituelles ...

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

... et cela fonctionne à partir d'une invite de commande d'administration (comme prévu) ...

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

Cependant, il ne semble pas que les correctifs habituels fonctionnent dans Windows 8.1 (au moins, les correctifs que j'ai pu trouver).

J'ai essayé de suivre la réponse à Comment créer un lien dans Windows 7 Home Premium en tant qu'utilisateur normal? , mais il semble n'avoir aucun effet.

J'ai également UAC réglé à son niveau le plus bas.

Y a-t-il autre chose qui me manque?

Karl Nicoll
la source
2
C'est la faute de l'UAC. Voir la réponse de "Paul Betts" ici: stackoverflow.com/questions/15320550/…
StackzOfZtuff
@StackzOfZtuff - Eh bien, c'est ennuyeux. Merci pour le lien, on dirait que je vais devoir choisir entre UAC et aucune application Metro. Je ne pense pas que je comprendrai jamais ce que Microsoft essayait de faire avec l'UAC.
Karl Nicoll

Réponses:

9

Privilège manquant dans le jeton "filtré"

Soit désactiver UAC. Ou avec UAC activé: après avoir activé, SECreateSymbolicLinkPrivilegeessayez avec un compte non administrateur .

Explication
C'est catch 17. D'après ma lecture de la documentation MS.

Si vous avez un groupe d'administrateurs bien connu sur liste noire dans votre compte d'utilisateur, un deuxième jeton non élevé est créé.

Les informations pertinentes SeCreateSymbolicLinkPrivilegesont filtrées lorsque le jeton non élevé est généré à partir du jeton élevé.

Depuis MSDN: Isolation de privilège d'interface utilisateur (UIPI) :

Windows créera deux jetons d'accès pour l'utilisateur si l'une des conditions suivantes est remplie: Le compte de l'utilisateur contient l'un des RID suivants.
DOMAIN_GROUP_RID_ADMINS
[...] Les
privilèges contenus dans le jeton filtré sont basés sur le fait que le jeton d'origine contenait l'un des RIDS restreints répertoriés ci-dessus. Si l'un des RID restreints se trouvait dans le jeton, tous les privilèges sont supprimés, à l'exception de:
SeChangeNotifyPrivilege
SeShutdownPrivilege
SeUndockPrivilege
SeReserveProcessorPrivilege
SeTimeZonePrivilege

La solution consiste donc à désactiver complètement la deuxième génération de jetons. Soit en supprimant tous les groupes mentionnés de votre compte, soit en désactivant complètement l'UAC.

(Avertissement: Paul Betts a fait le travail. Je viens d'ajouter quelques détails. Voir sa réponse ici: /programming/15320550/secreatesymboliclinkprivilege-ignored-on-windows-8 )

StackzOfZtuff
la source