2011-05-31 64 views

回答

3

你有沒有考慮從服務器的事件日誌中讀取?

'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(); 
     } 
    } 
} 
+0

@James:它發出錯誤,因爲未找到網絡路徑。 – bala3569 2011-05-31 10:07:18

+0

如果我最近24小時需要它,意味着我該怎麼辦 – bala3569 2011-05-31 10:08:45

+0

已編輯的問題。如果遠程運行,您需要插入服務器名稱,或者在本地使用'EventLog ev = new EventLog(logType,System.Environment.MachineName);'。 – 2011-05-31 10:15:32

0

您可以創建一個Windows服務並記錄啓動事件。這樣你就會知道服務已經開啓了多少次(並且已經關閉)。

相關問題