是否有可能獲得服務器在一段時間內使用c#重新啓動的次數?使用c#在一天內獲取服務器重新啓動次數?
我已經看到了這個帖子這是越來越窗最後關機時間Get the date-time of last windows shutdown event using .NET
什麼建議嗎?
是否有可能獲得服務器在一段時間內使用c#重新啓動的次數?使用c#在一天內獲取服務器重新啓動次數?
我已經看到了這個帖子這是越來越窗最後關機時間Get the date-time of last windows shutdown event using .NET
什麼建議嗎?
你有沒有考慮從服務器的事件日誌中讀取?
'USER32'系統事件源記錄關閉。
從我讀過它似乎是你應該能夠讀取遠程計算機的事件日誌程序以及(See How to manage event logs using Visual C# .NET or 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服務並記錄啓動事件。這樣你就會知道服務已經開啓了多少次(並且已經關閉)。
@James:它發出錯誤,因爲未找到網絡路徑。 – bala3569 2011-05-31 10:07:18
如果我最近24小時需要它,意味着我該怎麼辦 – bala3569 2011-05-31 10:08:45
已編輯的問題。如果遠程運行,您需要插入服務器名稱,或者在本地使用'EventLog ev = new EventLog(logType,System.Environment.MachineName);'。 – 2011-05-31 10:15:32