Quando l'interrogazione della Classe Win32_NTLogEvent da WMI con WQL è la proprietà TimeGenerated in base all'ora locale del computer o GMT?
-
28-09-2019 - |
Domanda
Sto scrivendo un servizio di C # finestre che sta facendo un po 'di sfornare attraverso il registro eventi su alcuni controller di dominio. Alcuni di loro sono Windows Server 2003 e alcuni sono Windows Server 2008. Al momento il servizio di arresto che sto cercando di riprendere da dove ho lasciato fuori nei registri. Per fare questo, invece di
SELECT * FROM Win32_NTLogEvent WHERE --criteria for events I am looking for
che sto facendo
SELECT * FROM Win32_NTLogEvent WHERE TimeGenerated = --some date AND --criteria for events I am looking for
A un certo punto ero convinto che il campo TimeGenerated era l'ora locale del server, ma ora sembra che i server di Windows 2008 utilizzano GMT per registrare quel tempo. Qualcuno può far luce su se questa è una vera differenza tra il modo in cui funzionano i due sistemi operativi o si tratta di un problema di configurazione?
Soluzione
data e ora di Windows sono sempre registrati in UTC. Essi vengono convertiti solo per l'ora locale in qualsiasi programma di grafica che si utilizza per guardare i dati, come il Visualizzatore eventi o Explorer (per i tempi di file). Questo comportamento è importante per evitare il guasto casuale ora legale transizioni temporali.
Altri suggerimenti
Inoltre, sembra che nelle versioni precedenti a Windows Server 2008 TimeGenerated è stato restituito in tempo locale, ma cambiato in GMT in Server 2008, come altri sono stati se ne accorga.
Una cosa come questa può essere utile:
("Select * from Win32_NTLogEvent Where Logfile = 'Application' AND EventCode = '999' AND Message Like '%message%' AND TimeGenerated = '201202210000000000.000000+***'")
La sintassi TimeGenerated
è installato all'indietro così nell'esempio sopra sua yearmonthdaytimeminutesseconds.000000+\***
è necessario il 000000+\***
precedente.
Spero che questo aiuti.