[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程序设计那本书 dxDBTreeList1树型结构查询问题 数值型字符串加1 自定义控件的问题(DBGrid) QuickRep报表,这个表要怎么作 QQ左边导航栏控件 请教(都来看一看) 我用tquery查询出的数据集怎么是只读的呀? 一个菜鸟问题,请帮一下忙! 用ADO连接Access数据库时,如果Access设置了密码怎么办? 如何使用Windows本身的API来进行窗口的移动和大小调整 请问我怎样知道一个文件已被安装,并且能查到他所在的目录 一个常出现的错误,请问怎么纠正?
这是个什么文件啊,我的机子上没有。
一定有的 文件名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