获取 windows 进程开始时间

Get windows process start time

我知道有像 go-ps 这样的软件包可以在 Windows 中为我们提供活动的 运行 进程,但是这个软件包没有进程启动时间等进程信息。

而且我知道在 Windows 电源 shell 中使用此命令我可以获得进程启动时间。

Get-Process | select name, starttime

我不想执行命令并得到解析它的结果,实际上主要的想法是如何使用像 os.

这样的主要 Go 包来获取处理时间

您可以为此使用 w32 包。我维护这个存储库,您可以通过创建问题或自己完成并打开拉取请求来要求包含新的 WinAPI 函数。

这里是如何获取当前进程的 运行 时间的示例。我们稍等一下,询问时间,输出略高于一秒。

package main

import (
    "fmt"
    "time"

    "github.com/gonutz/w32/v2"
)

func main() {
    time.Sleep(time.Second)
    creation, _, _, _, ok := w32.GetProcessTimes(w32.GetCurrentProcess())
    if !ok {
        panic("GetProcessTimes failed")
    }
    fmt.Println("creation", creation.Time())
    fmt.Println("run time", time.Now().Sub(creation.Time()))
}