2016-04-19 3 views
0

Как я могу контролировать службы Windows с помощью C#, и мне также нужно сохранить имя этих служб, время начала и время окончания службы, используя CSV-файл. Если запускаются какие-либо новые службы, они должны автоматически записывать имя службы, время начала и время окончания службы, используя существующий файл CSV.Как контролировать службы Windows с помощью C#

+0

Windows, уже записывает эту информацию в журнале событий. Почему бы просто не использовать это? –

+0

откуда я могу получить этот файл журнала @Damien_The_Unbeliever – ZearaeZ

ответ

0

Вы можете перечислить текущие службы, используя 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.

Этот блог показать, как вы можете контролировать журнал событий, чтобы получить уведомление, когда служба остановлена ​​или начала: https://dotnetcodr.com/2014/12/02/getting-notified-by-a-windows-service-status-change-in-c-net/

Смежные вопросы