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

如何从子进程上下文获取my_application.exe的原始路径?

获取父进程my_application.exe的原始路径(子进程上下文)

当子进程通过-c这类参数启动时,sys.argv[0]无法提供父进程的原始路径,你可以通过以下几种方式解决:

方法1:用psutil库跨平台获取(推荐)

psutil是跨平台的进程管理库,能直接获取父进程的可执行文件路径,无需依赖系统特定API。

示例代码(Python):

import psutil

def get_parent_exe_path():
    current_process = psutil.Process()
    parent_process = current_process.parent()
    # 可选:校验父进程是否为目标程序
    if parent_process and parent_process.name() == "my_application.exe":
        return parent_process.exe()
    return None

parent_path = get_parent_exe_path()
print(parent_path)

方法2:Windows平台原生API实现

如果是Windows环境,可通过pywin32调用系统API,先获取父进程ID,再查询其可执行路径。

示例代码(Python):

import win32api
import win32process

def get_parent_exe_path_win():
    # 获取当前进程ID
    current_pid = win32process.GetCurrentProcessId()
    # 获取父进程ID
    parent_pid = win32process.GetParentProcessId(current_pid)
    # 打开父进程并读取路径
    handle = win32api.OpenProcess(win32process.PROCESS_QUERY_INFORMATION | win32process.PROCESS_VM_READ, False, parent_pid)
    if handle:
        try:
            exe_path = win32process.GetModuleFileNameEx(handle, 0)
            return exe_path
        finally:
            win32api.CloseHandle(handle)
    return None

parent_path = get_parent_exe_path_win()
print(parent_path)

方法3:父进程主动传递路径(最可靠)

如果父子进程都在你的可控范围内,最稳妥的方式是启动子进程时,将父进程的原始路径通过环境变量或命令行参数传递,完全避免依赖进程查询API。

父进程侧代码:

import os
import subprocess
import sys

# 获取自身的原始路径
parent_exe_path = os.path.abspath(sys.executable)  # 若父进程是my_application.exe,替换为对应路径

# 方式1:通过环境变量传递
env = os.environ.copy()
env["PARENT_EXE_PATH"] = parent_exe_path
subprocess.Popen(["python", "-c", "import os; print(os.getenv('PARENT_EXE_PATH'))"], env=env)

# 方式2:通过命令行参数传递
subprocess.Popen(["python", "-c", "import sys; print(sys.argv[1])", parent_exe_path])

子进程侧代码:

# 读取环境变量
import os
print(os.getenv("PARENT_EXE_PATH"))

# 或读取命令行参数
import sys
print(sys.argv[1])

注意事项

  • 方法1和2依赖进程权限,若子进程无足够权限读取父进程信息,可能执行失败。
  • 方法3兼容性最好,优先用于可控的进程场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:52:35