在Go语言中,可以使用github.com/mitchellh/go-ps包来获取进程信息,并根据PID找到进程全路径。但是该包不支持直接获取进程的绝对路径,因此我们需要使用github.com/kardianos/osext包来获取可执行文件的绝对路径。

首先,需要在Go项目中引入这两个包:

import (
    "fmt"
    ps "github.com/mitchellh/go-ps"
    "github.com/kardianos/osext"
)

接下来,我们可以使用以下函数来实现根据进程PID找到进程全路径的功能:

func getProcessPath(pid int) (string, error) {
    // 获取所有进程列表
    processes, err := ps.Processes()
    if err != nil {
        return "", err
    }

    // 遍历进程列表,查找指定PID的进程
    for _, process := range processes {
        if process.Pid() == pid {
            // 获取进程名称
            processName := process.Executable()

            // 获取可执行文件的绝对路径
            executablePath, err := osext.ExecutableFolder()
            if err != nil {
                return "", err
            }

            // 拼接进程全路径
            fullPath := fmt.Sprintf("%s\\%s", executablePath, processName)
            return fullPath, nil
        }
    }

    return "", fmt.Errorf("Process with PID %d not found", pid)
}

然后,我们可以调用 getProcessPath 函数来获取进程的绝对路径:

func main() {
    pid := 12345 // 替换为实际的PID
    fullPath, err := getProcessPath(pid)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Process Path:", fullPath)
}

请注意,为了能够获取可执行文件的绝对路径,该代码需要在编译后的可执行文件中运行,而不是在IDE中直接运行

使用golang语言根据进程PID找到进程全路径绝对路径包括进程名称封装成函数传入pid返回绝对路径可以只关注windows平台golang120版本以上支持

原文地址: https://www.cveoy.top/t/topic/ic5H 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录