Как создать символические ссылки в Windows 8.1 без командной строки администратора?

8

Я надеюсь, что кто-то может исправить меня, если я ошибаюсь при попытке создать символическую ссылку в Windows 8.1 без необходимости запуска cmd.exe от имени администратора.

Всякий раз, когда я пытаюсь создать символическую ссылку из обычной командной строки, я получаю обычный ответ о разрешениях ...

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

... и он работает из командной строки администратора (как и ожидалось) ...

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

Однако не похоже, чтобы в Windows 8.1 работали какие-либо обычные исправления (по крайней мере, исправления, которые я мог найти).

Я попытался следовать ответу на Как создать ссылку в Windows 7 Home Premium как обычный пользователь? , но, похоже, не имеет никакого эффекта.

У меня также UAC установлен на самый низкий уровень.

Есть ли что-то еще, что мне не хватает?

Карл Николл
источник
2
Это вина UAC. Смотрите ответ "Пола Беттса" здесь: stackoverflow.com/questions/15320550/…
StackzOfZtuff
@StackzOfZtuff - Ну, это раздражает. Спасибо за ссылку, похоже, мне придется выбирать между UAC и приложениями Metro. Я не думаю, что когда-нибудь пойму, что Microsoft пытается сделать с UAC.
Карл Николл

Ответы:

9

Отсутствует привилегия в «отфильтрованном» токене

Либо отключите UAC. Или с включенным UAC: после включения SECreateSymbolicLinkPrivilegeпопробуйте использовать учетную запись без прав администратора .

Пояснение
Это подвох 17. Из того, как я читаю MS-документацию.

Если в вашей учетной записи пользователя есть хорошо известная черная группа администраторов, то создается второй токен без повышенных прав.

Релевантно SeCreateSymbolicLinkPrivilegeотфильтровывается, когда из повышенного токена генерируется ток с повышенными правами.

Из MSDN: Изоляция привилегий пользовательского интерфейса (UIPI) :

Windows создаст для пользователя два токена доступа, если выполняется одно из следующих условий: Учетная запись пользователя содержит любой из следующих идентификаторов RID.
DOMAIN_GROUP_RID_ADMINS
[...]
Какие привилегии содержат отфильтрованный токен, основаны на том, содержал ли исходный токен какой-либо из ограниченных RIDS, перечисленных выше. Если какой-либо из ограниченных RID был в токене, все привилегии будут удалены, кроме:
SeChangeNotifyPrivilege
SeShutdownPrivilege
SeUndockPrivilege
SeReserveProcessorPrivilege
SeTimeZonePrivilege

Таким образом, решение состоит в том, чтобы полностью отключить второе поколение токенов. Либо удалив все упомянутые группы из вашей учетной записи, либо полностью отключив UAC.

(Отказ от ответственности: Пол Беттс сделал работу. Я просто добавил некоторые детали. Смотрите его ответ здесь: /programming/15320550/secreatesymboliclinkprivilege-ignored-on-windows-8 )

StackzOfZtuff
источник