初めまして、VC++初心者のはにはにです。
現在、NT系OSのイベントビューアからイベントログを取得して、
それを表示するというものを作っています。
イベントログの取得はReadEventLog()を使用しているのですが、
WindowsNTにて起動させると、時間が-17時間ずれてしまいます。(2000、XPでは、ずれません
でした)
タイムゾーンを変更していろいろ試してみると、標準時だと正確に(イベントビューアに表示さ
れている時間と一致)表示されます。
時間がなぜずれるのかわかりません。また、その解決策を教えていただきたいです。
(日本時間(GMT+9時間)にて、-17時間ずれます)
<ソースの一部>(エラー処理は省略します)
HANDLR hEvent;
EVENTLOGRECORD *Event;
DWORD Bufsize;
DWORD Read;
DWORD Needed;
BOOL bret;
char *EventTime;
hEventLog = OpenEventLog(NULL,System);
for(;;){
Bufsize = 1;
Event = (EVENTLOGRECORD*)malloc(Bufsize);
bret = ReadEventLog(hEventLog,
EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
0,
Event,
BufSize,
&Read,
&Needed);
free(Event)
Bufsize = Needed;
Event = (EVENTLOGRECORD*)malloc(Bufsize);
bret = ReadEventLog(hEventLog,
EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
0,
Event,
Bufsize,
&dwRead,
&dwNeeded);
EventTime = ctime((const long*)&Event->TimeGenerated);
}
CloseEventLog(hEvent);
開発環境
WindowsXP SP2、VC++6.0
WindowsNTのDLLのバグではありませんか?
スタティックリンクでビルドしてみてください。
> スタティックリンクでビルドしてみてください。
逆に 2000/XP 系の処理をスタティックリンクしてるせいで
NT で誤動作している可能性も確認してみよう。