Я просмотрел все соответствующие темы, но не нашел ответа.
Я выполняю запрос WMI, чтобы получить дату и время самого старого события в журнале приложений. К сожалению, приведенный ниже запрос всегда возвращает 0 значений, но, по-видимому, синтаксис правильный, поскольку сообщение об ошибке не возвращается. Есть идеи, почему это происходит?
На самом деле встроенное решение c # загружает весь Eventviewer, и, поскольку я подключаюсь к удаленным машинам, производительность ужасна. Поэтому я выбрал WMI запрос
SelectQuery query = new SelectQuery("select * from Win32_NtLogEvent where Logfile ='" + logFileName + "' and RecordNumber = '1'");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query, opt)) {
foreach (ManagementObject mo in searcher.Get()) {
DateTime firstEventTime;
DateTime.TryParseExact(mo["TimeGenerated"].ToString().Substring(0, 12), "yyyyMMddHHmm", null, DateTimeStyles.None, out firstEventTime);
// if the time of the first entry of the application log is older that the dayback to check date
// set dayback to check to first app log entry date
logbox.writetoLogFile(this.GetType().Name, "First event time is " + firstEventTime, LogLevel.Debug);
if (firstEventTime > endDate) {
endDate = firstEventTime;
logbox.writetoLogTextbox("First eventviewer entry has date " + firstEventTime + ". Check log will stop at this date", Color.Black);
logbox.writetoLogFile(this.GetType().Name, "First eventviewer entry has date " + firstEventTime + ". Check log will stop at this date", LogLevel.Info);
}
}
}
К сожалению, я понял это сейчас. Номер записи не сбрасывается, поэтому событие 1 исчезло с давних пор. :( Есть идеи, как я мог собрать эту информацию?
Спасибо,
Marco