[100+100]重金收购读取%SystemRoot%\system32\config\SysEvent.Evt文件的API函数,及其用法(最好有代码)! 小弟身份低位只能一帖给100分 所以如果问题解决 小弟就再开一帖 放分! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 %SystemRoot%\system32\config\SysEvent.Evt这是个什么文件啊,我的机子上没有。 在C:\WINNT\system32\config\下面找找 一定有的 文件名SysEvent.Evt 我使的WIN98,没有这个文件。 太不专业了吧 怎么不用WIN2k啊?你找找C:\WINNT\system\config\或者C:\WINNT\system\下有没有 我要VB或者是Delphi的代码 很菜的我现在还看不太懂VC的代码.....经过我一番搜索 其实现在问题的焦点已经变成ReadEventLog这个API函数怎么用!下面是我用delphi的尝试,写不下去了 请高手指点:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var handle: integer; StrTemp: string; lpBuffer: Pointer;begin handle := OpenEventLog('','HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\System\Application Popup'); StrTemp := IntToStr(handle); ShowMessage(StrTemp); if ReadEventLog(handle,1,1,lpBuffer,,256,128) <>0 (*这个API函数我不会调用,请高手指点*)then begin //我想读取系统日志中记录的用net send命令发送的信息 请高手指点 end;end;end. 代碼:http://delphi.mtu-net.ru/zip/eventviewer.zip日志的移位与保护 Windows 2000的系统日志文件包括:应用程序日志、安全日志、系统日志、DNS服务日志,以及FTP连接日志和HTTPD日志等。在默认情况下日志文件大小为512KB,日志保存的默认的位置如下: 安全日志文件:%systemroot%\system32\config \SecEvent.EVT 系统日志文件:%systemroot%\system32\config \SysEvent.EVT 应用程序日志文件:%systemroot%\system32\config \AppEvent.EVT http://www.delphikingdom.com/asp/viewitem.asp?catalogid=530BackupEventLog ClearEventLog CloseEventLog DeregisterEventSource GetEventLogInformation GetNumberOfEventLogRecords GetOldestEventLogRecord NotifyChangeEventLog OpenBackupEventLog OpenEventLog ReadEventLog RegisterEventSource ReportEvent type _EVENTLOGRECORD =record Length: DWORD ; Reserved :DWORD ; RecordNumber: DWORD ; TimeGenerated :DWORD ; TimeWritten : DWORD ; EventID: DWORD ; EventType: WORD ; NumStrings: WORD ; EventCategory: WORD ; ReservedFlags: WORD ; ClosingRecordNumber: DWORD ; StringOffset: DWORD ; UserSidLength: DWORD ; UserSidOffset: DWORD ; DataLength: DWORD ; DataOffset: DWORD ; // // Then follow: // // TCHAR SourceName[] // TCHAR Computername[] // SID UserSid // TCHAR Strings[] // BYTE Data[] // CHAR Pad[] // DWORD Length; //end; EVENTLOGRECORD=_EVENTLOGRECORD; // Defines for the READ flags for Eventlogging//const EVENTLOG_SEQUENTIAL_READ = $0001 ;const EVENTLOG_SEEK_READ = $0002 ;const EVENTLOG_FORWARDS_READ = $0004 ;const EVENTLOG_BACKWARDS_READ = $0008 ;//// The types of events that can be logged.//const EVENTLOG_SUCCESS = $0000 ;const EVENTLOG_ERROR_TYPE = $0001 ;const EVENTLOG_WARNING_TYPE = $0002 ;const EVENTLOG_INFORMATION_TYPE = $0004 ;const EVENTLOG_AUDIT_SUCCESS = $0008;const EVENTLOG_AUDIT_FAILURE = $0010;//// Defines for the WRITE flags used by Auditing for paired events// These are not implemented in Product 1//const EVENTLOG_START_PAIRED_EVENT = $0001 ;const EVENTLOG_END_PAIRED_EVENT = $0002 ;const EVENTLOG_END_ALL_PAIRED_EVENTS= $0004 ;const EVENTLOG_PAIRED_EVENT_ACTIVE = $0008;const EVENTLOG_PAIRED_EVENT_INACTIVE =$0010;procedure TForm1.Button1Click(Sender: TObject);var handle1, size, flag: integer; MinNumberOfBytesNeeded, BytesRead, count:DWORD; StrTemp: string; lpBuffer: Pointer; ele:EVENTLOGRECORD;begin handle1 := OpenEventLog(nil,'C:\WINNT\system32\config\SysEvent.Evt'); StrTemp := IntToStr(handle1); // ShowMessage(StrTemp); ele.Length :=sizeof(EVENTLOGRECORD); // flag:=EVENTLOG_FORWARDS_READ or EVENTLOG_BACKWARDS_READ or EVENTLOG_SEEK_READ; flag:=EVENTLOG_SEEK_READ ; count:=0; if GetNumberOfEventLogRecords(handle1,count)=true then begin getmem(lpBuffer,sizeof(EVENTLOGRECORD)); if ReadEventLog(handle1,flag,1,Pointer(@ele),sizeof(ele),BytesRead,MinNumberOfBytesNeeded) =true then //这里老是false 偶也没办法? // if ReadEventLog(handle1,flag,0,lpBuffer,sizeof(EVENTLOGRECORD),BytesRead,MinNumberOfBytesNeeded) =true then begin StrTemp := IntToStr(BytesRead); ShowMessage(StrTemp); StrTemp :=IntToStr(ele.EventCategory ); ShowMessage(StrTemp); end; freemem(lpBuffer); end;end; http://delphi.mtu-net.ru/zip/eventviewer.zip下载不了老大! 一天没来 对不住大家了先谢谢高手aiirii(ari-爱的眼睛)兄弟 同时也谢谢阿贡兄弟 代码我还没看 我抓紧时间看一看 不懂的还要再问问让我们共同研究共同进步 倒 那个 偶已经在CBUILDER中使用了,大概思路 并不复杂就是那几个API调用只是有几个关键步骤:1)是 日志的大小一定对 不然读函数会一直返回为02)是读 日志的描述用到了 动态调用DLL 不好意思 小弟很菜 现在正在饿补WINDOWS程序设计那本书 用delphi5编的一个多线程程序包内存错 打印出来的条码,使用扫描枪扫描出来的结果为什么在最后多了个字符:‘n’?奇怪! 统计一下,有多少朋友在开发软件时,完全使用类和设计模式来实现的? 大家的Delphi环境的一些工程目录是怎么设置的?我的怎么不行啊? 诚邀共同创业的朋友 读取文本文件reset(myfile)报错.请问为何? 一段未完成的程序(请帮帮我,找错误原因) 无标题栏移动窗口--问题 各位高手,帮帮忙! 我有钱达智的c/s的powerPoint文件,怎样将其中的big5-》GB? 请问我怎样知道一个文件已被安装,并且能查到他所在的目录 一个常出现的错误,请问怎么纠正?
这是个什么文件啊,我的机子上没有。
一定有的 文件名SysEvent.Evt
你找找C:\WINNT\system\config\或者C:\WINNT\system\下有没有
很菜的我现在还看不太懂VC的代码.....经过我一番搜索 其实现在问题的焦点已经变成ReadEventLog这个API函数怎么用!下面是我用delphi的尝试,写不下去了 请高手指点:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
handle: integer;
StrTemp: string;
lpBuffer: Pointer;
begin
handle := OpenEventLog('','HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\System\Application Popup');
StrTemp := IntToStr(handle);
ShowMessage(StrTemp);
if ReadEventLog(handle,1,1,lpBuffer,,256,128) <>0 (*这个API函数我不会调用,请高手指点*)then
begin
//我想读取系统日志中记录的用net send命令发送的信息 请高手指点
end;
end;end.
http://delphi.mtu-net.ru/zip/eventviewer.zip日志的移位与保护 Windows 2000的系统日志文件包括:应用程序日志、安全日志、系统日志、DNS服务日志,以及FTP连接日志和HTTPD日志等。在默认情况下日志文件大小为512KB,日志保存的默认的位置如下: 安全日志文件:%systemroot%\system32\config \SecEvent.EVT 系统日志文件:%systemroot%\system32\config \SysEvent.EVT 应用程序日志文件:%systemroot%\system32\config \AppEvent.EVT
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=530BackupEventLog
ClearEventLog
CloseEventLog
DeregisterEventSource
GetEventLogInformation
GetNumberOfEventLogRecords
GetOldestEventLogRecord
NotifyChangeEventLog
OpenBackupEventLog
OpenEventLog
ReadEventLog
RegisterEventSource
ReportEvent
Length: DWORD ;
Reserved :DWORD ;
RecordNumber: DWORD ;
TimeGenerated :DWORD ;
TimeWritten : DWORD ;
EventID: DWORD ;
EventType: WORD ;
NumStrings: WORD ;
EventCategory: WORD ;
ReservedFlags: WORD ;
ClosingRecordNumber: DWORD ;
StringOffset: DWORD ;
UserSidLength: DWORD ;
UserSidOffset: DWORD ;
DataLength: DWORD ;
DataOffset: DWORD ;
//
// Then follow: //
// TCHAR SourceName[]
// TCHAR Computername[]
// SID UserSid
// TCHAR Strings[]
// BYTE Data[]
// CHAR Pad[]
// DWORD Length;
//
end;
EVENTLOGRECORD=_EVENTLOGRECORD;
// Defines for the READ flags for Eventlogging
//
const EVENTLOG_SEQUENTIAL_READ = $0001 ;
const EVENTLOG_SEEK_READ = $0002 ;
const EVENTLOG_FORWARDS_READ = $0004 ;
const EVENTLOG_BACKWARDS_READ = $0008 ;//
// The types of events that can be logged.
//
const EVENTLOG_SUCCESS = $0000 ;
const EVENTLOG_ERROR_TYPE = $0001 ;
const EVENTLOG_WARNING_TYPE = $0002 ;
const EVENTLOG_INFORMATION_TYPE = $0004 ;
const EVENTLOG_AUDIT_SUCCESS = $0008;
const EVENTLOG_AUDIT_FAILURE = $0010;//
// Defines for the WRITE flags used by Auditing for paired events
// These are not implemented in Product 1
//const EVENTLOG_START_PAIRED_EVENT = $0001 ;
const EVENTLOG_END_PAIRED_EVENT = $0002 ;
const EVENTLOG_END_ALL_PAIRED_EVENTS= $0004 ;
const EVENTLOG_PAIRED_EVENT_ACTIVE = $0008;
const EVENTLOG_PAIRED_EVENT_INACTIVE =$0010;procedure TForm1.Button1Click(Sender: TObject);
var
handle1,
size,
flag: integer;
MinNumberOfBytesNeeded,
BytesRead,
count:DWORD;
StrTemp: string;
lpBuffer: Pointer;
ele:EVENTLOGRECORD;
begin
handle1 := OpenEventLog(nil,'C:\WINNT\system32\config\SysEvent.Evt');
StrTemp := IntToStr(handle1);
// ShowMessage(StrTemp);
ele.Length :=sizeof(EVENTLOGRECORD);
// flag:=EVENTLOG_FORWARDS_READ or EVENTLOG_BACKWARDS_READ or EVENTLOG_SEEK_READ;
flag:=EVENTLOG_SEEK_READ ; count:=0; if GetNumberOfEventLogRecords(handle1,count)=true then
begin
getmem(lpBuffer,sizeof(EVENTLOGRECORD));
if ReadEventLog(handle1,flag,1,Pointer(@ele),sizeof(ele),BytesRead,MinNumberOfBytesNeeded) =true then
//这里老是false 偶也没办法?
// if ReadEventLog(handle1,flag,0,lpBuffer,sizeof(EVENTLOGRECORD),BytesRead,MinNumberOfBytesNeeded) =true then
begin
StrTemp := IntToStr(BytesRead);
ShowMessage(StrTemp);
StrTemp :=IntToStr(ele.EventCategory );
ShowMessage(StrTemp);
end;
freemem(lpBuffer);
end;
end;
下载不了老大!
先谢谢高手aiirii(ari-爱的眼睛)兄弟 同时也谢谢阿贡兄弟 代码我还没看 我抓紧时间看一看 不懂的还要再问问让我们共同研究共同进步
只是有几个关键步骤:1)是 日志的大小一定对 不然读函数会一直返回为0
2)是读 日志的描述用到了 动态调用DLL