使用c#在一天内获取服务器重启计数?

是否可以使用c#获取服务器在一段时间内重新启动的次数?

我已经看到这篇文章正在获取Windows上次关机时间使用.NET获取上次Windows关闭事件的日期时间

有什么建议吗?

您是否考虑过从服务器的事件日志中读取?

‘USER32’ 系统事件源记录关闭。

根据我的阅读,您似乎也应该能够以编程方式读取远程计算机的事件日志( 请参阅如何使用Visual C#.NET或Visual C#2005管理事件日志 )

编辑

以下控制台应用程序将用于查询USER32类型的远程计算机上的偶数日志。

您所要做的就是插入日期/时间比较并添加您的服务器名称。 它有点粗糙和准备好了,但我相信你可以根据需要美化它。

using System; using System.Diagnostics; namespace ReadEventLog { class Program { static void Main(string[] args) { string logType = "System"; //use this if your are are running the app on the server //EventLog ev = new EventLog(logType, System.Environment.MachineName); //use this if you are running the app remotely EventLog ev = new EventLog(logType, "[youservername]"); if (ev.Entries.Count <= 0) Console.WriteLine("No Event Logs in the Log :" + logType); // Loop through the event log records. for (int i = ev.Entries.Count - 1; i >= 0; i--) { EventLogEntry CurrentEntry = ev.Entries[i]; //use DateTime type to compare on CurrentEntry.TimeGenerated DateTime dt = DateTime.Now; TimeSpan ts = dt.Subtract( CurrentEntry.TimeGenerated); int hours = (ts.Days * 24) + ts.Hours; if (CurrentEntry.Source.ToUpper() == "USER32") { Console.WriteLine("Time Generated:" + CurrentEntry.TimeGenerated); Console.WriteLine("Hours ago:" + hours); Console.WriteLine("Event ID : " + CurrentEntry.InstanceId); Console.WriteLine("Entry Type : " + CurrentEntry.EntryType.ToString()); Console.WriteLine("Message : " + CurrentEntry.Message + "\n"); } } ev.Close(); } } } 

您可以创建Windows服务并记录启动事件。 这样你就会知道服务已启动多少次(并已关闭)。