You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python复制脚本到Windows启动目录报PermissionError如何解决

问题根因

触发PermissionError的核心原因不是目录访问权限不足,而是代码存在两处逻辑错误:

  • shutil.copyfile的目标参数要求传入包含文件名的完整文件路径,你传入的是启动文件夹本身的目录路径,函数会尝试将文件夹作为文件打开写入,直接触发权限类报错。
  • 即使路径修正正确,直接将.py脚本复制到启动目录也无法实现开机自启:Windows启动项默认不会自动调用Python解释器执行py文件,大概率会用默认关联的文本编辑器打开脚本,而非运行。
修正实现代码

无需管理员权限即可运行的稳定实现方案如下:

from shutil import copyfile
import os
import sys
from getpass import getuser

# 获取当前脚本的真实绝对路径,避免工作目录变动导致路径识别错误
current_script = os.path.abspath(sys.argv[0])
# 定位当前用户的启动目录
startup_folder = f"C:/Users/{getuser()}/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"

# 1. 将脚本复制到启动目录,目标参数补全完整文件名
target_script = os.path.join(startup_folder, "auto_run_task.py")
copyfile(current_script, target_script)

# 2. 生成bat引导脚本,保证开机时自动调用Python解释器运行脚本
bat_file = os.path.join(startup_folder, "start_auto_task.bat")
python_path = sys.executable  # 获取当前环境的Python解释器完整路径
with open(bat_file, "w", encoding="utf-8") as f:
    f.write(f'@echo off\nstart "" "{python_path}" "{target_script}"\n')
验证说明
  • 代码运行后按Win+R组合键,输入shell:startup回车即可打开启动目录,确认目录下存在auto_run_task.py和start_auto_task.bat两个文件即配置生效。
  • 不需要以管理员身份运行脚本,当前用户默认对自身的Startup文件夹拥有完整读写权限,之前的报错和系统权限限制无关。
  • 如果不需要复制脚本文件,也可以直接在bat文件中写入原脚本的绝对路径,省去文件复制步骤。

内容的提问来源于stack exchange,提问作者Sapphire Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 17:36:28