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

Windows注册表自启动Python程序时出现[Errno13]权限拒绝问题

问题原因及解决方案

核心原因

通过Windows注册表设置自启动时,程序的默认工作目录并非程序所在文件夹,而是系统目录(如C:\Windows\System32)。你用相对路径'save.macros'打开文件时,程序会尝试在系统目录下查找该文件——要么文件不存在,要么系统目录的权限限制导致无法读取,从而触发[Errno 13] Permission denied。而手动双击启动程序时,Windows会自动将程序所在目录设为工作目录,所以相对路径能正常找到文件。

解决方案

方案1:在代码中使用绝对路径(推荐)

修改代码,先获取程序自身的绝对路径,再拼接目标文件的路径,彻底避免工作目录的影响:

import os

# 获取当前程序所在的目录
program_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接目标文件的完整路径
file_path = os.path.join(program_dir, 'save.macros')

with open(file_path, mode='rb') as f:
    # 执行你的文件操作逻辑
    pass

方案2:修改注册表启动项,指定工作目录

如果不想修改代码,可以修改注册表中的自启动命令,通过cmd先切换到程序所在目录再启动程序:

  1. 打开注册表编辑器(regedit),找到自启动项位置:
    • 当前用户:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    • 所有用户:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  2. 修改对应启动项的数值数据,格式为:
    cmd /c "cd /d "C:\你的程序完整目录" && 你的程序文件名.exe"
    
    例如:cmd /c "cd /d "D:\MyApp" && my_program.exe"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:01:14