C#获取Windows服务启动的日期/时间

Nea*_*ers 4 c# service wmi process event-log

有没有办法获得服务上次在C#中启动的日期/时间?

我现在正在使用此代码来检查服务的状态:

ServiceController sc = new ServiceController(serviceName);
// check sc.status for "Running" etc... with a Switch statement... 
Run Code Online (Sandbox Code Playgroud)

我可以用这个对象吗?还是需要WMI?

原因:我正在编写一个小BizTalk监视器,常见的问题是人们经常忘记在部署后重新启动BizTalk服务(主机实例).我想展示它上次开始的时间.

Cha*_*ana 7

在C#应用程序中,写

 using System.Diagnostics;
 private static DateTime GetStartTime(string processName)
 {
    Process[] processes = 
        Process.GetProcessesByName(processName);
    if (processes.Length == 0) 
       throw new ApplicationException(string.Format(
          "Process {0} is not running.", processName));
    // -----------------------------
    DateTime retVal = DateTime.Now;
    foreach(Process p in processes)
       if (p.StartTime < retVal) 
          retVal = p.StartTime;

    return retVal ;
 }
Run Code Online (Sandbox Code Playgroud)

如果processname未运行,则抛出异常,修改以实现所需的任何替代行为.此外,如果此进程的多个实例正在运行,则会在最早启动时返回...