2016-04-23 4 views
-1

Gibt es eine Möglichkeit, Download-Verlauf des IE zu erhalten?Wo finde ich den Download-Verlauf des Internet Explorers?

Wir erhalten Downloads Geschichte von Firefox von downloads.sqlite Datei und wir erhalten Download-Geschichte von Chrome aus history.sqlite Datei.

Aber wie finden Sie heraus in IE?

Hat einige Versuche mit FindFirstUrlCacheEntry() durchgeführt, aber die Ausgabe ist nicht wie erwartet. Lesen Sie über die Datei index.dat, aber es wird nicht aktualisiert, während ich in IE stöbere.

+0

Dies wäre eine bessere Frage für superuser.com. – Barmar

+0

Dies ist nicht vom Thema entfernt. Er sucht programmatisch nach einer Lösung. Runter abstimmen wegen fehlendem Beispielcode, aber nicht schließen als nicht relevant. –

Antwort

0

Verwenden Sie die COM-Schnittstelle IUrlHistoryStg.

int main() 
{ 
    CoInitialize(NULL); 

    IUrlHistoryStg* ieHistory = NULL; 
    HRESULT hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_ALL, IID_IUrlHistoryStg, (LPVOID *)(&ieHistory)); 

    if (!SUCCEEDED(hr)) 
     return 1; 

    IEnumSTATURL* urlEnumer; 
    hr = ieHistory->EnumUrls(&urlEnumer); 

    if (!SUCCEEDED(hr)) 
     return 2; 

    if (!SUCCEEDED(urlEnumer->SetFilter(L"", STATURL_QUERYFLAG_ISCACHED|STATURL_QUERYFLAG_TOPLEVEL|STATURL_QUERYFLAG_NOURL|STATURL_QUERYFLAG_NOTITLE|STATURLFLAG_ISTOPLEVEL|STATURLFLAG_ISCACHED))) 
     return 4; 

    if (!SUCCEEDED(urlEnumer->Reset())) 
     return 3; 

    unsigned long correct = 0; 
    STATURL result = {}; 

    struct Urls 
    { 
     std::wstring url; 
     std::wstring title; 

     Urls(LPWSTR url, LPWSTR title) : url(url ? url : L""), title(title ? title : L"") 
     {} 
    }; 

    std::vector<Urls> urls; 

    do 
    { 
     result.cbSize = sizeof(result); 
     if (SUCCEEDED(urlEnumer->Next(1, &result, &correct))) 
     { 
      Urls url(result.pwcsUrl, result.pwcsTitle); 
      urls.push_back(url); 
     } 
    } 
    while (correct == 1); 

    size_t size = urls.size(); 
    ieHistory->Release(); 
    urlEnumer->Release(); 

    return 0; 
} 
+0

Vielen Dank für die Antwort. Ich habe den obigen Code ausprobiert und kann den IR-Verlauf abrufen, d. H. Links, die ich besucht habe. Allerdings kann ich die heruntergeladenen Dateien nicht verfolgen. Auch die Verwendung von FindFirstUrlCacheEntry, die in der Frage erwähnt wird, führt zu URLs, die ich besucht habe. Ich möchte den Verlauf heruntergeladener Dateien vom Internet Explorer abrufen. – Mrunal