流程的开始时间

时间:2009-05-29 04:31:13

标签: c# .net

如何使用c#代码检索进程的开始时间?如果可能的话,我也想知道如何使用内置于Widows的功能。

5 个答案:

答案 0 :(得分:7)

进程有一个属性“StartTime”: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.starttime.aspx

您想要“当前”流程的开始时间吗? Process.GetCurrentProcess将为您提供: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.getcurrentprocess.aspx

答案 1 :(得分:6)

 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(),您可以将机器名称指定为第二个参数。

要获取进程名称,请确保该应用程序正在运行。然后转到Applications选项卡上的任务管理器,右键单击您的应用程序并选择Go to process。在进程选项卡中,您将看到突出显示的进程名称。在c#代码中使用.exe之前的名称。对于例如Windows窗体应用程序将列为“myform.vshost.exe”。在代码中你应该说

 Process.GetProcessesByName("myform.vshost"); 

答案 2 :(得分: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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

{{1}}