Удаление истории Internet Explorer

Тема в разделе "WASM.WIN32", создана пользователем vg, 5 ноя 2008.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Кто-нибудь знает как программно удалить историю Internet Explorer (cache, cookie, urlhistory)?
    В Интернете ничего нет.
    Пробую следующим образом
    Код (Text):
    1. ClearUrlCache proc dwFilter:DWORD
    2.     LOCAL dwsize:DWORD
    3.     LOCAL hcache:DWORD
    4.     LOCAL cacheentry:INTERNET_CACHE_ENTRY_INFO
    5.    
    6.     mov dwsize,0
    7.     invoke FindFirstUrlCacheEntryEx,0,0,dwFilter,0,0,0,addr dwsize,0,0,0
    8.     .if eax!=0
    9.         invoke FindFirstUrlCacheEntryEx,0,0,dwFilter,0,0,addr cacheentry,addr dwsize,0,0,0
    10.         .if eax!=0
    11.             mov hcache,eax
    12.             .while TRUE
    13.                 invoke DeleteUrlCacheEntry,addr cacheentry.lpszSourceUrlName
    14.                 invoke DeleteUrlCacheEntry,addr cacheentry.lpszLocalFileName
    15.                 mov dwsize,0
    16.                 invoke FindNextUrlCacheEntryEx,hcache,0,addr dwsize,0,0,0 ; Get real size
    17.                 .if eax!=FALSE
    18.                     invoke FindNextUrlCacheEntryEx,hcache,addr cacheentry,addr dwsize,0,0,0
    19.                 .endif
    20.             .endw
    21.         .endif
    22.         invoke FindCloseUrlCache,hcache
    23.     .endif
    24.    
    25.     xor eax,eax
    26.     ret
    27. ClearUrlCache endp
    Результат нулевой.
     
  2. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    По пути
    C:\Documents and Settings\Профиль_пользователя\Local Settings\History\History.IE5\
    удаляешь все каталоги, имя которых начинается с MSHist

    у меня WinXP prof SP2
     
  3. planet

    planet New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    108
  4. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Пытаюсь реализовать предложенное planet.

    Очистка index.dat
    Код (Text):
    1.     LOCAL dwsize:DWORD
    2.     LOCAL hcache:DWORD
    3.     LOCAL cacheentry:INTERNET_CACHE_ENTRY_INFO
    4.    
    5.     invoke FindFirstUrlCacheEntry,0,0,addr dwsize ; получение реального размера структуры
    6.     .if eax!=0
    7.         invoke FindFirstUrlCacheEntry,0,addr cacheentry,addr dwsize
    первый FindFirstUrlCacheEntry возвращает ноль
    GetLastError выдаёт 87

    MSDN
    ???
     
  5. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    аргумент 2 (lpFirstCacheEntryInfo) не может быть нулем

    http://msdn.microsoft.com/en-us/library/aa384026(VS.85).aspx

    http://www.codeproject.com/KB/system/Cleanup_API.aspx
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    barton
    > аргумент 2 (lpFirstCacheEntryInfo) не может быть нулем
    Для wxpprosp3 это не так. Попробуй
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4.  
    5. .nolist
    6. include windows.inc
    7. include kernel32.inc
    8. include user32.inc
    9. include wininet.inc
    10. includelib kernel32.lib
    11. includelib user32.lib
    12. includelib wininet.lib
    13. .list
    14.  
    15. .const
    16. align 4
    17. szFoo   db  "Foo",0
    18. szFmt   db  "hCacheDir",09h, 09h, 09h,"= x%08X", 0Dh, 0Ah
    19.     db  "dwSize",09h, 09h, 09h, 09h,"= x%08X", 0Dh, 0Ah
    20.     db  "GetLastError",09h, 09h, 09h,"= x%08X", 0Dh, 0Ah
    21.     db  "ERROR_INSUFFICIENT_BUFFER", 09h,"= x%08X", 0Dh, 0Ah, 0
    22.  
    23. .code
    24. align 4
    25. foo proc
    26.     local   buffer [ 1024 ] : byte
    27.     local   dwSize          : dword
    28.     local   hCache          : HANDLE
    29.  
    30.     mov dwSize,0
    31.     invoke  FindFirstUrlCacheEntry, NULL, NULL, addr dwSize
    32.     mov hCache,eax
    33.     invoke  GetLastError
    34.     mov ecx,eax
    35.     invoke  wsprintf, addr buffer, offset szFmt, hCache, dwSize, ecx,\
    36.             ERROR_INSUFFICIENT_BUFFER
    37.     invoke  MessageBox, NULL, addr buffer, addr szFoo, MB_OK
    38.     cmp hCache,NULL
    39.     jz  short @F
    40.     invoke  FindCloseUrlCache, hCache
    41. @@:
    42.     ret
    43. foo endp
    44.  
    45. align 4
    46. start:
    47.     invoke  foo
    48.     invoke  ExitProcess, 0
    49. end start
    vg
    Перед вызовом FindFirstUrlCacheEntry необходимо инициализировать dwsize.

    > LOCAL cacheentry:INTERNET_CACHE_ENTRY_INFO
    С FindFirstUrlCacheEntry/FindNextUrlCacheEntry такой подход не подойдет. Каждый вызов может потребовать разное количество байт. Надо объявлять указатель на INTERNET_CACHE_ENTRY_INFO, резервировать память, вызывать FindFirstUrlCacheEntry/FindNextUrlCacheEntry, и если им не хватит буфера, то выделять заново.
     
  7. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    q_q

    hCacheDir =x00000000
    dwSize = x00000228
    GetLastError =x0000007A
    ERROR_INSUFFICIENT_BUFFER =x0000007A
     
  8. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    vg
    Это было для barton. Для тебя вторая часть сообщения.
     
  9. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Как перевести на masm32
    Код (Text):
    1. DWORD dwSize = 4096;
    2.  
    3. lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwSize];
    ?
     
  10. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    vg
    mov lpCacheEntry, FUNC(VirtualAlloc, 0, dwSize, MEM_COMMIT, PAGE_READWRITE)
     
  11. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Aspire
    error A2008: syntax error : ,
     
  12. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    q_q
    Честно, не догоняю...
    Можно пример на masm32, как это будет выглядеть до получения хэндла из FindFirstUrlCacheEntry?
     
  13. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    vg
    > error A2008: syntax error : ,
    Макрос FUNC неопределен. Включи masm32\macros\macros.asm.

    > Можно пример на masm32
    Можно. Компилировать как _консольное_ пирложение.
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4.  
    5. .nolist
    6. include windows.inc
    7. include kernel32.inc
    8. include user32.inc
    9. include wininet.inc
    10. includelib kernel32.lib
    11. includelib user32.lib
    12. includelib wininet.lib
    13. .list
    14.  
    15. .const
    16. szEOL                    db 0Dh, 0Ah, 0
    17. szNull                   db "(null)", 0
    18. szFmtLastError           db "%s failed %d", 0
    19. szFindFirstUrlCacheEntry db "FindFirstUrlCacheEntry", 0
    20. szFindNextUrlCacheEntry  db "FindNextUrlCacheEntry", 0
    21. szGlobalAlloc            db "GlobalAlloc", 0
    22.  
    23.  
    24. .code
    25. ;;-------------------------------------------------------;;
    26.   align 4
    27.   SimplePuts proc psz : LPTSTR
    28.     local hOutPut  : dword
    29.     local bWritten : dword
    30.  
    31.     invoke GetStdHandle,STD_OUTPUT_HANDLE
    32.     mov hOutPut,eax
    33.     invoke lstrlen, psz
    34.     mov ecx,eax
    35.     invoke WriteFile, hOutPut, psz, ecx, addr bWritten, NULL
    36.     invoke WriteFile, hOutPut, offset szEOL, 2, addr bWritten, NULL
    37.     xor eax,eax
    38.     ret
    39.   SimplePuts endp
    40.  
    41.  
    42. ;;-------------------------------------------------------;;
    43.   align 4
    44.   SimplePrintf proc C, pszFormat, param:VARARG
    45.     local buffer[2048] : byte
    46.  
    47.     invoke wvsprintf, addr buffer, pszFormat, addr param
    48.     invoke SimplePuts, addr buffer
    49.     ret
    50.   SimplePrintf endp
    51.  
    52.  
    53. ;;-------------------------------------------------------;;
    54.   align 4
    55.   foo proc
    56.     local dwSize : dword
    57.     local hCache : HANDLE
    58.     local picei  : ptr INTERNET_CACHE_ENTRY_INFO
    59.  
    60.     mov hCache,NULL
    61.     mov dwSize,0
    62.     mov picei,NULL
    63. @0:
    64.     .if hCache == NULL
    65.       invoke FindFirstUrlCacheEntry, NULL, picei, addr dwSize
    66.       mov hCache,eax
    67.     .else
    68.       invoke FindNextUrlCacheEntry, hCache, picei, addr dwSize
    69.     .endif
    70.  
    71.     .if eax == 0
    72.       invoke GetLastError
    73.       cmp eax,ERROR_NO_MORE_ITEMS
    74.       jz @cleanup
    75.       cmp eax,ERROR_INSUFFICIENT_BUFFER
    76.       jz short @F
    77.       .if hCache == NULL
    78.         mov ecx,offset szFindFirstUrlCacheEntry
    79.       .else
    80.         mov ecx,offset szFindNextUrlCacheEntry
    81.       .endif
    82.       invoke SimplePrintf, offset szFmtLastError, ecx, eax
    83.       jmp @cleanup
    84.     @@:
    85.       cmp picei,NULL
    86.       jz short @F
    87.       invoke GlobalFree, picei
    88.       mov picei,NULL
    89.     @@:
    90.       invoke GlobalAlloc, GPTR, dwSize
    91.       mov picei,eax
    92.       cmp picei,NULL
    93.       jnz @0
    94.       invoke GetLastError
    95.       invoke SimplePrintf, offset szFmtLastError, offset szGlobalAlloc, eax
    96.       jmp @cleanup
    97.     .endif
    98.  
    99.     push ebx
    100.     mov ebx,picei
    101.     assume ebx : ptr INTERNET_CACHE_ENTRY_INFO
    102.     invoke SimplePuts, [ebx].lpszSourceUrlName
    103. ;;    invoke SimplePuts, [ebx].lpszLocalFileName
    104. ;;    invoke DeleteUrlCacheEntry, [ebx].lpszSourceUrlName
    105.     pop ebx
    106.     jmp @0
    107.  
    108.   @cleanup:
    109.     cmp hCache,NULL
    110.     jz short @F
    111.     invoke FindCloseUrlCache, hCache
    112.   @@:
    113.     cmp picei,NULL
    114.     jz short @F
    115.     invoke GlobalFree, picei
    116.   @@:  
    117.     ret
    118.   foo endp
    119.  
    120. ;;-------------------------------------------------------;;
    121.   align 4
    122.   start:
    123.     invoke foo
    124.     invoke ExitProcess, 0
    125.  
    126.   end start
     
  14. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    q_q
    Для чего ты используешь align 4 ?
     
  15. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    для выравнивания ;)
     
  16. q_q

    q_q New Member

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