C# 如何使用c监控windows服务#

C# 如何使用c监控windows服务#,c#,windows,service,C#,Windows,Service,我如何使用c#监控windows服务?我还必须将这些服务名称、开始时间和服务结束时间保存在CSV文件中。如果启动了任何新服务,则应在现有CSV文件中自动写入服务名称、启动时间和服务结束时间。您可以使用ServiceController或ManagementObjectSearcher列出正在运行的服务 以下是使用ManagementObjectSearcher的示例: using System.Management; ... StringBuilder sb = new StringBuil

我如何使用c#监控windows服务?我还必须将这些服务名称、开始时间和服务结束时间保存在CSV文件中。如果启动了任何新服务,则应在现有CSV文件中自动写入服务名称、启动时间和服务结束时间。

您可以使用
ServiceController
ManagementObjectSearcher
列出正在运行的服务

以下是使用
ManagementObjectSearcher
的示例:

using System.Management;

...

StringBuilder sb = new StringBuilder();
string format = "{0},{1},{2},{3},{4}";

// Header line
sb.AppendFormat(format, "DisplayName", 
                        "ServiceName", 
                        "Status", 
                        "ProcessId", 
                        "PathName");
sb.AppendLine();

ManagementObjectSearcher searcher = 
           new ManagementObjectSearcher("SELECT * FROM Win32_Service");

foreach( ManagementObject result in searcher.Get() )
{
    sb.AppendFormat(format, result["DisplayName"], 
                            result["Name"], 
                            result["State"], 
                            result["ProcessId"], 
                            result["PathName"]
                   );
    sb.AppendLine();
}

File.WriteAllText(
         @"C:\temp\ManagementObjectSearcher_services.csv", 
         sb.ToString()
);
要获取启动和停止时间,您似乎必须查询Windows事件日志

这篇博文展示了如何监视事件日志,以便在服务停止或启动时获得通知:

Windows已将此信息记录在事件日志中。为什么不直接使用它呢?从那里我可以得到这个日志文件@Damien_The_unsiever