尝试在 Windows 10 上使用 python 创建符号链接时出现权限错误

问题描述 投票:0回答:3

我正在尝试在 Windows 10(家庭版)上使用 python 创建符号链接,如下所示。代码:

import ctypes

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

但我明白了。错误:

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

如何解决这个问题?

python windows symlink
3个回答
15
投票

如果启用了 UAC 并且您的用户是管理员,则本地安全机构(LSA,托管在 lsass.exe 中)使用受限访问令牌登录您的用户。对于此令牌,

BUILTIN\Administrators
组仅用于拒绝访问;完整性级别标签为中而不是高;通常授予管理员的权限已被过滤掉。

要创建符号链接,您需要使用无限制/提升的访问令牌(即从中完整性级别提升到高完整性级别)来创建进程。通过右键单击并选择“以管理员身份运行”来执行此操作。此提升的令牌将由子进程继承,因此只需从提升的命令提示符运行 Python 脚本即可,您可以通过键盘快捷键 Win+X A 打开该命令提示符。您可以通过运行

whoami /priv
并检查
SeCreateSymbolicLinkPrivilege
是否存在来验证 cmd shell 是否已提升。如果该状态被禁用,请不要惊慌。 Windows
CreateSymbolicLink
功能会自动启用此权限。

也就是说,既然您正在创建一个 directory 符号链接,那么也许连接也可以正常工作。创建连接不需要特殊权限。您可以使用 cmd 的

mklink
命令创建连接。例如:

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

14
投票

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

  1. 打开gpedit.msc

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

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

  3. 重新启动计算机


8
投票

如今,创建符号链接的最简单方法是启用开发人员模式。

转到

Settings > System > For Developers
,然后将
Developer Mode
转到
on
。立即,应该可以创建符号链接。

(在 Windows 10 上,位于

Settings > Privacy & Security > For Developers
下)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.