从回收站删除单个项目

问题描述:

在C#(interop也许)中有任何方法可以永久删除回收站中的特定文件吗?

虽然在互联网上搜索,我只找到方法来删除回收站不是从。 我也不想清空整个垃圾箱,只是一个特定的文件。具体项目已经在回收站中。从回收站删除单个项目

我该怎么做?

编辑:

  1. 我没有那个文件我自己,也不是我的程序。有人这样做,我无法控制。
  2. Windows搜索以某种方式能够找到我的文件...?!?

我发现了另一件事,我实际上可以在C:\ RECYCLER中找到具有相同文件扩展名但文件名不同的文件。那么我怎么知道这是否是我正在寻找的文件呢?

+0

你怎么知道这是你正在寻找的文件?内容,大小等? – 2009-07-13 16:36:08

+0

1.相同的扩展 2.清除一切,包括隐藏文件夹回收,只删除我的文件 瞧它在那里的唯一文件 – eric 2009-07-13 17:45:13

+0

啊我希望它不会来... 我会看看 – eric 2009-07-13 14:19:36

这可能是一个愚蠢的问题,但文件进入回收,因为你的程序放在那里?如果是这样,您可以使用普通文件操作删除文件,并完全绕过回收站。

+0

没有别人,但它有 – eric 2009-07-13 14:03:18

我从来没有尝试过,但是您可以在每个单元所隐藏的文件夹“RECYCLER”中搜索想要删除的项目,并将其删除。

+0

Windows搜索能够真正做到这一点,但由于某些原因的GetFiles()返回一些奇怪的其他文件,甚至没有在我的回收站。 我似乎无法得到我正在寻找的文件 不幸的是... – eric 2009-07-13 14:06:50

using Shell32; 

变种SHL =新壳牌();

// Get recycle folder 

Folder Recycler = Shl.NameSpace(10); 
FolderItems items = Recycler.Items(); 
for (int i = 0; i < items.Count; i++) 
{ 
    try 
    { 
     FolderItem FI = items.Item(i); 
     string FileName = Recycler.GetDetailsOf(FI, 0); 
     string FilePath = Recycler.GetDetailsOf(FI, 1); 
     string RecyleDate = Recycler.GetDetailsOf(FI, 2); 
     if (FileName == "your file/folder") 
     { 
      // check if chosen item is a folder 
      if (FI.IsFolder) 
      { 
       Directory.Delete(FI.Path, true); 
      } 
      else 
      { 
       File.Delete(FI.Path); 
      } 
     } 
    } 
    catch (Exception exc) 
    { 
     ... 
    } 

希望这可能会有所帮助。适用于我)