Удаление одного элемента из корзины - PullRequest
3 голосов
/ 13 июля 2009

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

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

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

EDIT:

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

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

Ответы [ 4 ]

2 голосов
/ 13 июля 2009
1 голос
/ 15 января 2013
using Shell32;

var Shl = new Shell ();

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

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

0 голосов
/ 13 июля 2009

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

0 голосов
/ 13 июля 2009

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

...