2015-02-04 19 views
6

Windows 7 | 8'de explorer.exe dosyasını doğrudan "Geri Dönüşüm Kutusu" na açacak bir WPF düğmesi istiyorum. Bunun nedeni, uygulamamın çok sayıda dosyayı silmesi ve kullanıcıya dosyaları geri yüklemenin hızlı bir yolunu sağlamaktır. Komut satırı argümanları çalışmaz, muhtemelen "Geri Dönüşüm Kutusu" sanal bir dizin. "$ Geri Dönüşüm Kutusu" kullanmayı denedim. Bir sanal dosya başarısız olduğunda Explorer.exe/kök. Geri Dönüşüm \ Bin'deki alanı korumaya çalışmak da işe yaramıyor gibi görünüyor.Programlanabilir veya komut satırı nasıl açılabilir explorer.exe dosyasını "Geri Dönüşüm Kutusu" na aç

İşte test ettiğim ve kullandığım Scott Powell'ın çalışma kodu. Bunu başarmak amacıyla Sen

System.Diagnostics.Process.Start("explorer.exe", "shell:RecycleBinFolder"); 
+2

yerine sanal dizinin gerçek dizinde SID ve açık Explorer kurtarmak için Hesap Yönetimi kullanmak için yukarıdaki öneri bize Scott Powell için bazı kod – chouaib

+0

Teşekkür göstermektedir. –

+0

lütfen yorumlara kod koymayın, [sorunuzu değiştirin] (http://stackoverflow.com/posts/28311915/edit) ve orada kod örnekleri koyun. –

cevap

5

@ size Scott ederiz \ $ Recycle.Bin \% SID% adlı gizli bir dizin, burada% SID%, silme işlemini gerçekleştiren kullanıcının SID'sidir.

Yani bu kapalı, yapabileceğimiz tabanlı:

string str_RecycleBinDir = UserPrincipal.Current.Sid; 
Process.Start("explorer.exe","C:\$Recycle.Bin\" + str_RecycleBinDir); 

kapalı tabanlı kullanıcı hesabı artık düzgün Geri Dönüşüm Kutusu dizine erişmek mümkün olmalıdır System.DirectoryServices.AccountManagement

bir .NET başvurusu ekleyin çalışan. Windows 7'de çalışma (test edilmiş).

Zaten .NET Microsoft.VisualBasic.FileIO.FileSystem sınıfında uygulanan
+0

bunu yaptı mı? –

+0

Evet, sadece komut istemine yapıştırın. –

0

Geri Dönüşüm Kutusu bulunan, C# kodu itibaren

start shell:RecycleBinFolder 

şunu kullanabilirsiniz aşağıdaki komutu yürütebilir

private void ExploreTrashBin () 
     { 
     String str_RecycleBinDir = String.Format(@"C:\$Recycle.Bin\{0}", UserPrincipal.Current.Sid); 
     Process . Start ("explorer.exe" , str_RecycleBinDir); 
     } 
    private void TrashBin_Button_Click (object sender , RoutedEventArgs e) 
     { 
     ExploreTrashBin (); 
     } 
+0

Bir çekicilik gibi çalışır! özel void ExploreTrashBin() { Dize str_RecycleBinDir = Dize.Format (@ "C: \ $ Recycle.Bin \ {0}", UserPrincipal.Current.Sid); Boolean Sucess = İşlem. Başlat ("explorer.exe", str_RecycleBinDir); } –

+0

Bunu sevmiyorum - bunu ileride Windows sürümlerinde değişebilen geri dönüşüm kutusunun uygulama detayına dayandırıyorsunuz. – Dai

+0

@Dai Microsoft'un gelecekteki bir sürümde böyle bir şeyi değiştireceğinden şüphe ediyorum. Değişse bile, güncellenmesi gereken bir kod satırı, hepsi bu kadar. Çok basit bir değişiklik. –

1

(şimdiye C# doğal this kullanımını destekler).

Bu şekilde, çalışma kabuk komutunu gerekmez: etkileşimli, Windows Explorer ileyapılması sanki sadece programlı dosya/klasörlersilmek! Daha iyi

using Microsoft.VisualBasic.FileIO; 

FileSystem.DeleteFile(...) 
FileSystem.DeleteDirectory(...) 

enter image description here

+2

Ve 'Microsoft.VisualBasic' ad alanının sizi çıkarmasına izin vermeyin. C# kodundan kullanmak gayet iyi. –

İlgili konular