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

Win11中subprocess.run调用Notepad报package identity错误,os.system正常?

Windows 11中subprocess.run启动记事本报WinError 15700的解决办法

问题原因

Windows 11的记事本已转为MSIX封装的UWP应用,C:\WINDOWS\notepad.exe只是一个轻量启动器。用户级安装的Miniforge环境中,直接用subprocess.run启动该启动器时,缺少UWP应用所需的包身份上下文,触发WinError 15700错误;而os.system通过cmd.exe间接启动,cmd会自动处理UWP应用的启动上下文,因此可以正常运行。

解决办法

  • 通过cmd.exe间接启动
    模拟os.system的运行逻辑,借助cmd.exe启动记事本,规避直接调用启动器的上下文问题:

    import subprocess
    subprocess.run(['cmd.exe', '/c', r'C:\WINDOWS\notepad.exe'])
    
  • 直接调用UWP记事本的URI
    使用Windows的URI协议直接启动UWP版本的记事本,无需依赖exe启动器:

    import subprocess
    subprocess.run(['explorer.exe', 'notepad:'])
    

    或者启用shell调用start命令:

    import subprocess
    subprocess.run(['start', 'notepad:'], shell=True)
    
  • 通过PowerShell启动
    借助PowerShell的Start-Process命令处理启动上下文:

    import subprocess
    subprocess.run(['powershell.exe', '-Command', 'Start-Process notepad.exe'])
    
  • 调整subprocess创建标志(可选)
    先安装pywin32库(pip install pywin32),再尝试修改进程创建标志补充必要上下文:

    import subprocess
    import win32process
    
    subprocess.run(
        [r'C:\WINDOWS\notepad.exe'],
        creationflags=win32process.CREATE_NEW_CONSOLE
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:00:09