一个进程的启动时间

6

如何使用c#代码检索进程的启动时间?如果可能的话,我也想知道如何使用Windows内置功能来实现。

5个回答

8
 public DateTime GetProcessStartTime(string processName)
 {
        Process[] p = Process.GetProcessesByName(processName);
        if (p.Length <= 0) throw new Exception("Process not found!");
        return p[0].StartTime;
 }

如果您知道进程的ID,可以使用Process.GetProcessById(int processId)方法。此外,如果进程在网络上的另一台计算机上,则对于GetProcessesByName()和GetProcessById()方法,您可以将计算机名称指定为第二个参数。
要获取进程名称,请确保应用程序正在运行。然后转到任务管理器的“应用程序”选项卡,在您的应用程序上右键单击并选择“转到进程”。在“进程”选项卡中,您将看到进程名称被突出显示。在C#代码中使用.exe之前的名称。例如,Windows窗体应用程序将列为"myform.vshost.exe"。在代码中,应该写:
 Process.GetProcessesByName("myform.vshost"); 

如何在不编写代码的情况下知道启动时间。我的意思是从Windows本身开始。 - Sauron
1
您所说的“从 Windows 本身”是什么意思?您的问题中提到了“C# 代码”。 - Rashmi Pandit
我需要代码。我只想知道如何从Windows中获取它? - Sauron
我编辑了我的回复。这个回答解决了你的问题吗,还是你还需要其他的帮助? - Rashmi Pandit

8

如何在不编写代码的情况下知道启动时间。我的意思是从Windows本身开始。 - Sauron
那是一个单独的问题,可能与编程无关。 - Matthew Flaschen

0
System.Diagnostics.Process.GetProcessById(xxx).StartTime;//fails for certain processes with access denied

0

在代码中

假设您想要查找正在运行的PID为4548的记事本的启动时间。您可以使用PID或进程名称来查找它,并像这样将其打印到调试窗口:

//pick one of the following two declarations
var procStartTime = System.Diagnostics.Process.GetProcessById(4548).StartTime;
var procStartTime = System.Diagnostics.Process.GetProcessesByName("notepad").FirstOrDefault().StartTime;
System.Diagnostics.Debug.WriteLine(procStartTime.ToLongTimeString());

在Windows中

您可以使用Process Explorer,它有一个选项来显示进程启动时间,或者您可以通过以下命令行列出所有当前运行的进程及其启动时间:

wmic process get caption,creationdate

0

通过检查Process.GetProcessesByName()返回的Process对象,您可以获取进程元数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接