При запросе класса Win32_NTLogEvent из WMI с WQL свойство TimeGenerated основывается на локальном времени компьютера или GMT? - PullRequest
0 голосов
/ 17 июня 2010

Я пишу службу Windows на C #, которая обрабатывает журнал событий на нескольких контроллерах домена.Некоторые из них - Windows Server 2003, а некоторые - Windows Server 2008. После остановки службы я пытаюсь возобновить с того места, где остановился в журналах.Чтобы сделать это вместо

SELECT * FROM Win32_NTLogEvent WHERE --criteria for events I am looking for

я делаю

SELECT * FROM Win32_NTLogEvent WHERE TimeGenerated = --some date AND --criteria for events I am looking for

В какой-то момент я убедился, что поле TimeGeneratedбыло по местному времени сервера, но теперь кажется, что серверы Windows 2008 используют GMT для записи этого времени.Может ли кто-нибудь пролить свет на то, насколько сильно отличается функционирование двух операционных систем, или это проблема конфигурации?

Ответы [ 3 ]

1 голос
/ 17 июня 2010

Кроме того, кажется, что в версиях, предшествующих Windows Server 2008, TimeGenerated был возвращен по местному времени, но в Server 2008 изменился на GMT, как другие заметили.

0 голосов
/ 21 февраля 2012

Может быть полезно что-то подобное:

("Select * from Win32_NTLogEvent Where Logfile = 'Application' AND EventCode = '999' AND Message Like '%message%' AND TimeGenerated = '201202210000000000.000000+***'")

Синтаксис TimeGenerated настроен в обратном направлении, поэтому в приведенном выше примере его yearmonthdaytimeminutesseconds.000000+\*** предшествует 000000+\***.

Надеюсь, это поможет.

0 голосов
/ 17 июня 2010

Метки времени Windows всегда записываются в UTC.Они будут преобразованы в местное время только в любой программе с графическим интерфейсом, которую вы используете для просмотра данных, например, в Event Viewer или Explorer (для времени файлов).Это поведение важно, чтобы избежать случайного сбоя при переходах на летнее время.

...