小弟身份低位只能一帖给100分 所以如果问题解决 小弟就再开一帖 放分!

解决方案 »

  1.   

    %SystemRoot%\system32\config\SysEvent.Evt
    这是个什么文件啊,我的机子上没有。
      

  2.   

    在C:\WINNT\system32\config\下面找找 
    一定有的 文件名SysEvent.Evt
      

  3.   

    我使的WIN98,没有这个文件。
      

  4.   

    太不专业了吧 怎么不用WIN2k啊?
    你找找C:\WINNT\system\config\或者C:\WINNT\system\下有没有
      

  5.   

    我要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.
      

  6.   

    代碼:
    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 
      

  7.   

    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;
      

  8.   

    http://delphi.mtu-net.ru/zip/eventviewer.zip
    下载不了老大!
      

  9.   

    一天没来 对不住大家了
    先谢谢高手aiirii(ari-爱的眼睛)兄弟  同时也谢谢阿贡兄弟 代码我还没看 我抓紧时间看一看 不懂的还要再问问让我们共同研究共同进步
      

  10.   

    倒 那个 偶已经在CBUILDER中使用了,大概思路 并不复杂就是那几个API调用
    只是有几个关键步骤:1)是 日志的大小一定对 不然读函数会一直返回为0
    2)是读 日志的描述用到了 动态调用DLL
      

  11.   

    不好意思 小弟很菜 现在正在饿补WINDOWS程序设计那本书