проблема с ClearEventLog

Тема в разделе "WASM.BEGINNERS", создана пользователем Flasher, 21 июн 2005.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Почему-то ClearEventLog действует только на один файл, а их в папке config - целых 3.

    Может подскажите, в чём может быть проблема?



    вот код:

    Код (Text):
    1. .586
    2. .model flat,stdcall
    3. option casemap:none
    4. include \masm32\include\windows.inc
    5. include \masm32\include\user32.inc
    6. includelib \masm32\lib\user32.lib
    7. include \masm32\include\kernel32.inc
    8. includelib \masm32\lib\kernel32.lib
    9. include \masm32\macros\strings.mac
    10. include \masm32\include\Advapi32.inc
    11. includelib \masm32\lib\Advapi32.lib
    12.  
    13. .data
    14. szConf db "\config\",0
    15. WinDir db 512 dup(?)
    16.  
    17. .code
    18. ClearEventLogs proc cfName:dword
    19.      local hEventLog:HANDLE
    20.        invoke OpenEventLogA,0,cfName
    21.        mov hEventLog,eax
    22.         test eax,eax
    23.         jz @F
    24.        invoke ClearEventLogA,hEventLog,0
    25.        @@:invoke CloseEventLog,hEventLog
    26.        ret
    27. ClearEventLogs endp
    28. GetEvent proc uses edi lpPath:DWORD
    29.      local hFind:DWORD
    30.      local wfd:WIN32_FIND_DATA
    31.         invoke lstrlen,lpPath
    32.         mov edi,eax
    33.         invoke lstrcat,lpPath,$CTA0("*.Evt")
    34.         invoke FindFirstFile,lpPath,addr wfd
    35.         mov hFind,eax
    36.          test eax,eax
    37.          jz sf_exit
    38. sf_loop:mov eax,lpPath
    39.         mov byte ptr [eax+edi],0
    40.         invoke lstrcat,lpPath,addr wfd.cFileName
    41.          test dword ptr [wfd.dwFileAttributes],FILE_ATTRIBUTE_DIRECTORY
    42.          jz sf_file
    43.         jmp sf_next
    44. sf_file:invoke ClearEventLogs,lpPath
    45. sf_next:invoke FindNextFile,hFind,addr wfd
    46.         test eax,eax
    47.         jnz sf_loop
    48. sf_exit:invoke FindClose,hFind
    49.         ret
    50. GetEvent endp
    51. start:
    52.        invoke GetSystemDirectory ,addr WinDir,512
    53.        invoke lstrcat,addr WinDir,addr szConf
    54.        invoke GetEvent,addr WinDir
    55.        invoke ExitProcess,0
    56. end start




    Только стирает все записи из AppEvent.Evt

    А SecEvent.Evt и SysEvent.Evt остаются нетронутыми.



    Я думал, дело в привилегиях, получил, но серавно не помогло.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Flasher

    Afaik в качестве второго параметра функции OpenEventLog надо указывать не имя файла, а одно из имен из ветки реестра HKLM\SYSTEM\CurrentControlSet\Services\Eventlog.
     
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    q_q

    Благодарю!

    Всего-то нуно было писать вот так:
    Код (Text):
    1.        invoke ClearEventLogs,$CTA0("Application")
    2.        invoke ClearEventLogs,$CTA0("System")
    3.        invoke ClearEventLogs,$CTA0("Security")




    ;)