技术开发 频道

用C#获取IE临时文件

【IT168 技术文档】

    大家知道,在我们访问一个网站的时候。系统会把这个网站上的图片,动画等内容全部缓存到Internet临时文件夹中。我们可以通过 <Drives>:\Documents and Settings\<user>\Local Settings\Temporary Internet Files访问。但是可能我们都没有想到,里面的文件实际却不同于我们系统中其他的文件夹和文件的关系。

    举例说明,我们在VS.net下写一个函数来返回指定文件夹中的文件夹和所有文件时,但我们把Internet临时文件夹的地址传进去时,系统只会返回一个文件,那就是 desktop.ini(每个文件夹都有),还有一个隐藏的文件夹。所以这就证明了在临时文件夹中的文件并不是按照普通的文件夹与文件的方式存在的。

    其实windows是把临时文件全部存在一个隐藏的文件夹中,这个文件夹是我们都看不到的,然后靠一个index.dat的索引把内容全部读出来回显给用户。

    那我们怎么用程序来读取其中的内容呢? 因为这几天在帮同学完成他的毕业设计,所以研究了一下。
    首先要引用一个user.dll,在系统文件夹中。然后利用它其中的一些函数就可以遍历整个文件夹,并获得其中每个文件的信息。

[DllImport("wininet.dll", SetLastError=true, CharSet=CharSet.Auto)] public static extern IntPtr FindFirstUrlCacheEntry( [MarshalAs(UnmanagedType.LPTStr)] string lpszUrlSearchPattern, IntPtr lpFirstCacheEntryInfo, ref int lpdwFirstCacheEntryInfoBufferSize); [DllImport("wininet.dll", SetLastError=true, CharSet=CharSet.Auto)] public static extern bool FindNextUrlCacheEntry( IntPtr hEnumHandle, IntPtr lpNextCacheEntryInfo, ref int lpdwNextCacheEntryInfoBufferSize); [DllImport("wininet.dll")] public static extern bool FindCloseUrlCache( IntPtr hEnumHandle);

     引入以上三个函数来遍历临时文件夹,然后再引用

[DllImport("kernel32.dll",SetLastError=true, CharSet=CharSet.Auto)] public static extern int FileTimeToSystemTime( IntPtr lpFileTime, IntPtr lpSystemTime);

    用来把 FileTime时间格式转化成c#中的string类型,以便我们进一步操作。

    主体程序如下:

引入dll FileTimeToSystemTime 加载数据



0
相关文章