0

いくつかのドメインコントローラーでイベントログをかき回すC#Windowsサービスを作成しています。それらのいくつかはWindowsServer2003であり、いくつかは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フィールドはサーバーの現地時間であると確信していましたが、現在、Windows2008サーバーはGMTを使用してその時間を記録しているようです。これが2つのオペレーティングシステムの機能の仕方が本当に異なる場合、またはこれが構成の問題である場合、誰かが光を当てることができますか?

4

3 に答える 3

1

さらに、Windows Server 2008より前のバージョンでは、TimeGeneratedは現地時間で返されましたが、他の人が気付いていたように、Server2008ではGMTに変更されたようです。

于 2010-06-17T18:24:17.247 に答える
0

Windowsのタイムスタンプは常にUTCで記録されます。これらは、イベントビューアやエクスプローラ(ファイル時間用)など、データの表示に使用するGUIプログラムでのみ現地時間に変換されます。この動作は、夏時間の移行時にランダムな障害が発生しないようにするために重要です。

于 2010-06-17T17:28:16.313 に答える
0

このようなものが役立つかもしれません:

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

TimeGenerated構文は逆方向に設定されているため、上記の例でyearmonthdaytimeminutesseconds.000000+\***は前の例000000+\***が必要です。

お役に立てれば。

于 2012-02-21T09:03:06.433 に答える