A exclusão de um único item da lixeira
-
12-09-2019 - |
Pergunta
Existe alguma maneira em C # (interoperabilidade talvez) para excluir um arquivo específico na lixeira permanentemente?
Embora a pesquisa na internet eu só encontrei maneiras de apagar para a lixeira não FROM.
Eu também não quero esvaziar todo o bin, apenas um arquivo específico. O item específico já está na lixeira.
Como posso fazer isso?
EDIT:
- eu não colocar o arquivo lá eu, nem meu programa. Alguém fez isso eu não tenho controle sobre isso.
- Windows Search de alguma forma é capaz de encontrar o meu arquivo ...?!?
Eu descobri outra coisa, eu posso realmente encontrar um arquivo em C: \ RECYCLER com a mesma extensão de arquivo, mas um nome diferente. Então, como posso dizer se isso é realmente o arquivo que estou procurando?
Solução
Com base na seguinte pós em .NETMonster
Você precisa verificar PInvoke.
Outras dicas
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)
{
...
}
Esperamos que possa ser útil. Obras para me)
Eu nunca tentei, mas você pode procurar o item que deseja excluir na pasta "RECYCLER" oculto que cada unidade tem, e excluí-lo.
Esta pode ser uma pergunta estúpida, mas se o arquivo ir para a reciclagem porque o seu programa de colocá-lo lá? Se assim for, você pode simplesmente excluir o arquivo usando operações de arquivo normais e ignorar a lixeira inteiramente.