有没有办法如何复制临时Internet文件?

时间:2011-01-24 05:05:51

标签: delphi caching filesystems temporary-files special-folders

帮助我如何从xp或更高版本的临时Internet文件中复制文件。 copyfile没有正在处理它。

我想让它像CopyFileEx(scr, dst):boolean

2 个答案:

答案 0 :(得分:2)

我认为你使用的是错误的道路。此文件夹[ Internet临时文件]具有特殊结构,要查看此结构,请尝试使用[ faAnyFile ]属性进行搜索,如下所示:

procedure TForm2.Button2Click(Sender: TObject);
var
  path: Array[0..MAX_PATH] of Char;
  sRec: TSearchRec;
begin
  SHGetFolderPath(0, CSIDL_INTERNET_CACHE, 0,0, @path);
  if FindFirst(PATH+'\*.*', faAnyFile, sRec) = 0 then
    Begin
      repeat
        ListBox1.Items.Add(sRec.Name);
      until (FindNext(sRec) <> 0);
      FindClose(sRec);
    End;
end;

你会发现一些文件夹(Content.IE5,Content.MSO,AntiPhishing ...),在Content.IE5文件夹下你也可以找到这样随机名字的子文件夹:

<path>temporary internet files\content.ie5\randomfoldername

因此,如果您正在寻找现金文件,您可以在这些随机子文件夹中找到它,但是您必须编写搜索算法来搜索这些文件夹以查找所需的文件,然后您可以使用其真实路径复制它

编辑: 您还可以使用dos CMD中的 dir 命令查看[ Internet临时文件]目录的真实结构,如下所示: enter image description here

BTW:别忘了在Dos中使用短路径名称。

答案 1 :(得分:0)

使用IE缓存的最佳方法是使用WinInet API,在这种情况下使用GetUrlCacheEntryInfo/Ex()函数。传入原始URL,它将返回缓存文件的确切本地路径(以及其他内容),然后您可以根据需要进行复制。另请查看用于枚举缓存内容的FindFirst/NextUrlCache...()函数。