天天看点

C# 系统应用之获取IE浏览记录和IE地址栏输入网址

该文章是“个人电脑历史记录清除软件”项目的系统应用系列文章.

前文说过在windows中ie历史记录的位置为:"c:\users\dell\appdata\local\microsoft\windows\history",历史记录是存放最近时间访问过的网站地址,它以时间和站点存储.如下图所示:

C# 系统应用之获取IE浏览记录和IE地址栏输入网址

那么,我们可以通过environment.getfolderpath(environment.specialfolder.history)获取ie历史记录.

其中environment.getfolderpath(environment.specialfolder.xxx)用于检索系统特殊文件夹的路径,常见有:

(1).history 用作 internet 历史记录项的公共储存库的目录

(2).cookies 用作 internet cookie 的公共储存库的目录

(3).internetcache 用作 internet 临时文件的公共储存库的目录

(4).recent 包含用户最近使用过的文档的目录

(5).mypictures “my pictures”文件夹

(6).mydocuments “我的电脑”文件夹

(7).programfiles “program files”目录

但是运行它进行删除delete操作或获取操作时,它常常会有系统文件,很多文件不能访问到.在删除中就会遇到"该文件正在另一进程使用,因此该进程无法访问此文件"或"文件访问被拒绝".而采用rundll32.exe调用win32 api函数shellexecute()执行实现的.同样,使用它获取得到的历史记录如下图所示.显然不是我想要的结果,同时在清除cookies后还是能显示很多cookies信息.猜测是google、360等浏览器的?

C# 系统应用之获取IE浏览记录和IE地址栏输入网址

打开运行(ctrl+r)并输入"regedit"打开注册表,在"hkey_current_user\software\microsoft\internet explorer\typedurls"下可以看见最近使用ie浏览器在地址栏输入的网址,如下图所示:

C# 系统应用之获取IE浏览记录和IE地址栏输入网址

其中对应的ie浏览器如下图所示:

C# 系统应用之获取IE浏览记录和IE地址栏输入网址

通过下面的代码,借助registrykey注册表顶级节点和获取该路径下的文件,即可显示相应的显示ie浏览器的地址栏网址.注意registrykey需要引用命名空间using microsoft.win32.

运行结果如下图所示:

C# 系统应用之获取IE浏览记录和IE地址栏输入网址

经过我的处理后运行结果如下图所示:

C# 系统应用之获取IE浏览记录和IE地址栏输入网址

但是我也遇到了一个问题,就是它的ftlastvisited(the last time the user visited this page)存储该网页最后访问时间,想通过该时间进行获取今天访问的或排序输出前100.但是获取该时间时总输出错误,同时将filetime转换成systemtime或time_t都没成功.希望以后能解决.

最后该文章主要是结合自己的实际东西讲解,如果你刚好遇到类似的问题就可能对你有所帮助.同时如果在文章中遇到错误或不足的地方,请海涵!最重要的是感谢上面提到的博主.希望能把获取时间等问题也解决.请尊重作者的劳动果实,勿喷!!!