ڼС
梦回起点
做你害怕做的事,你会发现:不过如此
本站基于WordPress—主题by 设计窝
冀ICP备15003737号
梦回起点
Copyright © 2015-2024 All rights reserved.

获取ie浏览记录及地址栏记录

文中的链接为代码的出处,没生产代码,知识代码的搬运工。
IE历史记录存放位置
C:\Users\XXX\AppData\Local\Microsoft\Windows\History

https://www.cnblogs.com/calm2012/archive/2013/03/13/2958048.html

#include <wininet.h>
#include <shlobj.h> 
#include <Shlwapi.h>
#pragma  comment(lib,"Shlwapi.lib")
#pragma  comment(lib,"Wininet.lib")
#include <tlhelp32.h>

#include <atlconv.h>

void urlFiltrateIE(LPCWSTR lpUrl)
{
    if(!lpUrl){
        return ;
    }
    wprintf(L"%s\n", lpUrl);
}

void GetIeHistoryUseWininet (void)
{

    // 获取IE的历史记录
    HANDLE hCacheEnumHandle = NULL;
    LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;
    DWORD dwSize = 1024;

    lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)malloc(dwSize);
    lpCacheEntry->dwStructSize = dwSize;

    hCacheEnumHandle = FindFirstUrlCacheEntry(_T("visited:"), lpCacheEntry, &dwSize);

    if(hCacheEnumHandle != NULL)
    {
        urlFiltrateIE(lpCacheEntry->lpszSourceUrlName);
    }
    else
    {
        switch(GetLastError())
        {
        case ERROR_INSUFFICIENT_BUFFER:
            if(lpCacheEntry){
                free(lpCacheEntry);
            }
            lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)malloc(dwSize);
            lpCacheEntry->dwStructSize = dwSize;

            hCacheEnumHandle = FindFirstUrlCacheEntry(_T("visited:"), lpCacheEntry, 
                &dwSize);
            if (hCacheEnumHandle != NULL) 
            {
                urlFiltrateIE(lpCacheEntry->lpszSourceUrlName);
                break;        
            }
            else
            {
                if(lpCacheEntry){
                    free(lpCacheEntry);
                }
                return; 
            }
        default:
            {
                FindCloseUrlCache(hCacheEnumHandle);
            }
        }
    }

    bool bNext = true;
    do 
    {

        if (FindNextUrlCacheEntry(hCacheEnumHandle, lpCacheEntry, &dwSize))
        {
            urlFiltrateIE(lpCacheEntry->lpszSourceUrlName);
        }
        else
        {
            switch(GetLastError())
            {
            case ERROR_INSUFFICIENT_BUFFER:
                if(lpCacheEntry){
                    free(lpCacheEntry);
                }
                lpCacheEntry = 
                    (LPINTERNET_CACHE_ENTRY_INFO)malloc(dwSize);
                memset(lpCacheEntry,0,dwSize);
                lpCacheEntry->dwStructSize = dwSize;

                if (FindNextUrlCacheEntry(hCacheEnumHandle, lpCacheEntry, 
                    &dwSize)) 
                {
                    urlFiltrateIE(lpCacheEntry->lpszSourceUrlName);
                    break;
                }
                else
                {
                    FindCloseUrlCache(hCacheEnumHandle);
                    bNext = false;
                    break; 
                }
                break;
            case ERROR_NO_MORE_ITEMS:
                FindCloseUrlCache(hCacheEnumHandle);
                bNext = false;
                break;
            default:
                FindCloseUrlCache(hCacheEnumHandle);
                bNext = false;
                break;
            }
        }
    } while (bNext);
    if(lpCacheEntry){
        free(lpCacheEntry);
    }
}

https://www.cnblogs.com/joeblackzqq/archive/2011/03/15/1985379.html

#include<stdio.h>
#include<windows.h>//所需头文件
#include <ShlObj.h>
#include <urlhist.h>
#include <COMDEF.H>

void PrintHistory() 
{
    HRESULT   hr; 
    IUrlHistoryStg2   *puhs; 
    IEnumSTATURL   *pesu; 
    STATURL   su; 
    ULONG   celt; 
    _bstr_t   bstr; 
    CoInitialize(NULL);
    hr = ::CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER, IID_IUrlHistoryStg, (LPVOID*)&puhs); 
    if(SUCCEEDED(hr)) 
    { 
        hr = puhs-> EnumUrls(&pesu);
        if(SUCCEEDED(hr)) 
        {
            while(SUCCEEDED(pesu->Next(1, &su, &celt)) && celt > 0)
            { 
                if(su.pwcsUrl){
                    wprintf(L"%s\n", su.pwcsUrl);
                }
                pesu->Release();
            }
        }
        puhs-> Release();
    }
}

int main(void)
{
    PrintHistory();
    return 0;
}

//浏览器地址栏记录
https://blog.csdn.net/fanying1115/article/details/106641155

void read_value(){
    HKEY cpp_key;
    LPCTSTR cpp_data = L"Software\\Microsoft\\Internet Explorer\\TypedUrls";
    if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER, cpp_data, 0, KEY_READ, &cpp_key)){
        DWORD dwIndex = 0, NameSize, NameCnt, NameMaxLen, Type;
        DWORD KeySize, KeyCnt, KeyMaxLen, DateSize, MaxDateLen;
        if (ERROR_SUCCESS == RegQueryInfoKey(cpp_key, NULL, NULL, 0, &KeyCnt, &KeyMaxLen, NULL, &NameCnt, &NameMaxLen, &MaxDateLen, NULL, NULL)){
            for (DWORD dwIndex = 0; dwIndex < NameCnt; dwIndex++)
            {
                DateSize = MaxDateLen + 1;
                NameSize = NameMaxLen + 1;
                WCHAR * szValueName = (WCHAR *)malloc(NameSize);
                LPBYTE szValueDate = (LPBYTE)malloc(DateSize);
                RegEnumValue(cpp_key, dwIndex, szValueName, &NameSize, NULL, &Type, szValueDate, &DateSize);
                wprintf(L"%s   %s\n", szValueName, szValueDate);
                free(szValueName);
                free(szValueDate);
            }
        }
    }
    RegCloseKey(cpp_key);
}

一个开源的工具,可以查看ie的历史记录
https://github.com/csuft/QIECacheViewer

2022-04-12
                         
暂无评论

发表回复