从服务添加URL到IE缓存

时间:2016-04-14 08:12:31

标签: c++ internet-explorer winapi browser-history com-object

我有一项服务需要将URL添加到登录用户的IE缓存中

为了做到这一点,我首先使用OpenProcessToken获取用户的令牌并致电ImpersonateLoggedOnUser

我尝试使用2种方法添加网址

  1. 使用IUrlHistoryStg2 COM接口,并调用AddUrlAndNotify方法
  2. 以下列方式使用CommitUrlCacheEntryW CommitUrlCacheEntryW(urlToEnterWithPrefix, 0, ExpireTime, LastModifiedTime, URLHISTORY_CACHE_ENTRY | NORMAL_CACHE_ENTRY, NULL, 0, NULL, NULL);
  3. 当进程在登录用户下运行时,两种方法都正常工作,但在LocalSystem下运行时失败

    CommitUrlCacheEntryW文档统计信息:

      

    WinINet不支持服务器实现。另外,它   不应该从服务中使用。对于服务器实现或   服务使用Microsoft Windows HTTP服务(WinHTTP)。

    但我在WinHTTP中找不到与CommitUrlCacheEntryW

    对应的任何方法

    我想帮助解决以下问题:

    1. 我可以使用服务中的IUrlHistoryStg2来访问已登录用户的网址吗?
    2. 如何使用服务中的CommitUrlCacheEntryW或更简洁的功能来访问已登录用户的网址历史记录?
    3. 还有第三种选择我还没用过吗?

1 个答案:

答案 0 :(得分:0)

在撤销CommitUrlCacheEntryW API之后,我发现它检查了

  • 如果当前主题是假冒
  • 如果处理服务

如果任一检查为真,则存在错误代码0x80070078

所以,我想要实现的是服务无法实现的目标