如何在没有管理员命令提示符的情况下在 Windows 8.1 中创建符号链接?

Kar*_*oll 9 windows symbolic-link command-line windows-8.1

我希望有人可以纠正我在 Windows 8.1 中尝试创建符号链接时出错的地方,而不必以管理员身份运行 cmd.exe。

每当我尝试从常规命令提示符创建符号链接时,我都会收到通常的权限响应...

C:\Users\MyUser>mklink symlink.txt mytextfile.txt
You do not have sufficient privilege to perform this operation.
Run Code Online (Sandbox Code Playgroud)

...它确实可以在管理员命令提示符下工作(如预期的那样)......

C:\Users\MyUser>mklink symlink.txt mytextfile.txt
symbolic link created for symlink.txt <<===>> mytextfile.txt
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有任何通常的修复程序在 Windows 8.1 中起作用(至少,我能找到的修复程序)。

我已经尝试按照如何作为普通用户在 Windows 7 家庭高级版中创建链接的答案进行操作?,但似乎没有效果。

我也将 UAC 设置为最低级别。

还有什么我想念的吗?

Sta*_*uff 10

“过滤”令牌中缺少特权

要么禁用 UAC。或者启用 UAC:启用后SECreateSymbolicLinkPrivilege尝试使用非管理员帐户。

Explanation
It's catch 17. 从我阅读 MS 文档的方式来看。

如果您的用户帐户中有一个列入黑名单的知名管理员组,则会创建第二个未提升的令牌。

SeCreateSymbolicLinkPrivilege当从提升的令牌生成非提升的令牌时,相关的将被过滤掉。

来自 MSDN:用户界面权限隔离(UIPI)

如果满足以下任一条件,Windows 将为用户创建两个访问令牌: 用户的帐户包含以下任何 RID。
DOMAIN_GROUP_RID_ADMINS
[...]
过滤的令牌包含哪些特权取决于原始令牌是否包含上面列出的任何受限 RIDS。如果任何受限制的 RID 位于令牌中,则所有特权都将被删除,除了:
SeChangeNotifyPrivilege
SeShutdownPrivilege
SeUndockPrivilege
SeReserveProcessorPrivilege
SeTimeZonePrivilege

所以解决方案是完全禁用第二代令牌。通过从您的帐户中删除所有提到的组,或完全禁用 UAC。

(免责声明:Paul Betts 完成了这项工作。我只是添加了一些细节。在此处查看他的回答:https : //stackoverflow.com/questions/15320550/secreatesymboliclinkprivilege-ignored-on-windows-8