2009-07-13 4 views
3

Есть ли способ в C# (возможно, interop) удалить конкретный файл в корзине?

При поиске в Интернете я только нашел способы удалить в корзину, а не FROM. Я также не хочу очищать весь контейнер, только один конкретный файл. Конкретный элемент уже находится в корзине.Удаление одного элемента из корзины

Как я могу это сделать?

EDIT:

  1. Я не ставил туда файл сам, ни моя программа. Кто-то другой сделал это, я не контролирую это.
  2. Windows Search как-то может найти мой файл ...?!?

Я выяснил, что я могу найти файл в C: \ RECYCLER с тем же расширением, но с другим именем. Итак, как я могу определить, действительно ли это файл, который я ищу?

+0

Знаете ли вы, что это файл, который вы ищете? Содержание, размер и т. Д.? –

+0

1. то же расширение 2. очистило все, включая скрытую папку recycler, и удалил только мой файл Voila это был единственный файл – eric

ответ

-1

Это может быть глупый вопрос, но сделал ли файл переработку, потому что ваша программа положила его туда? Если это так, вы можете просто удалить файл, используя обычные файловые операции, и полностью обходить корзину.

+0

no somebody else there there there – eric

0

Я никогда не пробовал, но вы можете искать элемент, который хотите удалить, в скрытой папке «RECYCLER», которую есть у каждого устройства, и удалить его.

+0

Windows Search может это сделать, но по некоторым причинам GetFiles() возвращает некоторые странные другие файлы даже в моем корзине. Я не могу получить файл, который я действительно ищу К сожалению ... – eric

0
using Shell32; 

вар ЗЫ = новая оболочка();

// 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) 
    { 
     ... 
    } 

Надеюсь, это может быть полезно. Работает для меня)

+1

Не могли бы вы объяснить ваш код? – user35443

 Смежные вопросы

  • Нет связанных вопросов^_^