【问题标题】:How to delete IE addressbar history on Vista/Win7?Vista/Win7如何删除IE地址栏历史记录?
【发布时间】:2010-09-05 01:40:45
【问题描述】:

首先,这是我看到的图片 http://img713.imageshack.us/img713/4797/iedrop.png

我需要一个解决方案来清除地址栏 dropdawn,但不使用 ClearMyTracksByProcess 或 IE 对话框。我需要只删除一个特定的 URL 和他的所有痕迹。

我在以下位置手动删除了该 URL 的所有痕迹:

  1. Users\\AppData\Local\Microsoft\Windows\Temporary Internet Files*
  2. 用户\\AppData\Local\Microsoft\Windows\History*
  3. 用户\\最近的*

该网址也可以在以下位置找到:

4) 用户\\AppData\Local\Microsoft\Internet Explorer\Recovery\High

现在我制作了一个 BootTime 程序,它在我的所有系统磁盘文件中搜索 8 位和 16 位字符集字符串。在任何地方都找不到 URL,但是在登录并启动 IE 后,该 URL 仍然存在。我怀疑这与 4) 有关,但无法理解。

【问题讨论】:

  • 我觉得这个问题适合superuser.com
  • 由于@ssianky 一直在寻找(然后提供)程序化解决方案,所以这个问题属于 SO。

标签: c++ internet-explorer winapi history address-bar


【解决方案1】:

终于找到了解决办法。

HRESULT CreateCatalogManager(ISearchCatalogManager **ppSearchCatalogManager)
{
    *ppSearchCatalogManager = NULL;

    ISearchManager *pSearchManager;
    HRESULT hr = CoCreateInstance(CLSID_CSearchManager, NULL, CLSCTX_SERVER, IID_PPV_ARGS(&pSearchManager));
    if (SUCCEEDED(hr))
    {
        hr = pSearchManager->GetCatalog(L"SystemIndex", ppSearchCatalogManager);
        pSearchManager->Release();
    }
    return hr;
}

{

    ISearchCatalogManager *pCatalogManager;
    HRESULT hr = CreateCatalogManager(&pCatalogManager);

    if (SUCCEEDED(hr))
    {
        pCatalogManager->Reset();
        pCatalogManager->Release();
    }
}

【讨论】:

  • 这只会从 url 输入字段中删除内容,您知道如何删除所有历史记录吗?
【解决方案2】:

地址栏 URL 存储在 TypedUrls 注册表项中。请参阅此 project 声称枚举并删除它们(我还没有测试过)。

下拉列表中的历史项目存储在 URL 历史数据库中。使用IUrlHistoryStg::DeleteUrl()

【讨论】:

  • 那不是 TypedUrls。 TypedUrls 可以在图片的第一行看到,我知道如何从注册表中删除它们。
  • 哦,那好吧。使用 IUrlHistoryStg。
  • IUrlHistoryStg::DeleteUrl() 也不起作用。它会删除 VisitedUrls 但不会从地址栏中删除。
  • CSIDL_HISTORY 上的 IShellFolder/IEnumIDList 接口也会删除历史记录,但同样不是来自地址栏
  • 嗯,这就是数据源。 IE 可能正在缓存它们。你在重启浏览器吗?
猜你喜欢
  • 1970-01-01
  • 2012-05-31
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 2017-06-16
  • 1970-01-01
相关资源
最近更新 更多