尝试在Windows 10上使用python创建符号链接时发生特权错误

时间:2015-09-30 23:39:34

标签: python windows symlink

我正在尝试使用带有foll的Windows 10(家庭版)上的python创建符号链接。代码:

import ctypes

kdll = ctypes.windll.LoadLibrary("kernel32.dll")
kdll.CreateSymbolicLinkW(src_dir, dst_dir, 1)

但我得到了foll。错误:

*** error: (1314, 'CreateSymbolicLink', 'A required privilege is not held by the client.')

如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

如果启用了UAC且您的用户是管理员,则本地安全机构(LSA,托管在lsass.exe中)会使用受限访问令牌为您的用户登录。对于此令牌,BUILTIN\Administrators组仅用于拒绝访问;完整性标签是中等而不是高;通常授予管理员的权限已被过滤掉。

要创建符号链接,您需要使用不受限制/提升的访问令牌(即从中等到高完整性级别升级)创建流程。通过右键单击并选择“以管理员身份运行”来执行此操作。这个提升的令牌将由子进程继承,因此从提升的命令提示符运行Python脚本就足够了,您可以通过键盘快捷键 Win + X A 打开它。您可以通过运行whoami /priv并检查是否存在SeCreateSymbolicLinkPrivilege来验证cmd shell是否已升级。如果状态被禁用,请不要惊慌。 Windows CreateSymbolicLink功能会自动启用此权限。

那就是说,既然你正在创建一个目录符号链接,那么结点也许也会起作用。创建联结不需要特殊权限。您可以使用cmd的mklink命令创建联结。例如:

subprocess.check_call('mklink /J "%s" "%s"' % (link, target), shell=True)

答案 1 :(得分:1)

https://www.scivision.dev/windows-symbolic-link-permission-enable/

  1. 打开 gpedit.msc

  2. 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 用户权限分配 → 创建符号链接

    输入用户名,然后单击“检查名称”,然后单击“确定”。

  3. 重启电脑