如何以编程方式c#或命令行打开explorer.exe到"回收站"

时间:2015-02-04 01:24:11

标签: c# wpf windows

我想要一个WPF按钮,它会将Windows 7 | 8中的explorer.exe直接打开到“回收站”中。这是因为我的应用程序删除了大量文件,我希望为用户提供一种快速恢复文件的方法。命令行参数不起作用,可能是因为“回收站”是一个虚拟目录。我尝试过使用“$ Recycle Bin”。 Explorer.exe / root,其中a是虚拟文件失败。试图保护Recycle \ Bin中的空间似乎不起作用。

以下是我测试并使用的Scott Powell的工作代码。 谢谢Scott @

    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 ( );
        }

3 个答案:

答案 0 :(得分:5)

您可以执行以下命令以实现此目的,

start shell:RecycleBinFolder

您可以使用的C#代码,

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

答案 1 :(得分:1)

它已经在.Net中的 Microsoft.VisualBasic.FileIO.FileSystem 类中实现(因此C#本身支持使用this)。

这样,您不需要运行 shell命令:只需删除文件/文件夹以编程方式,就像使用Windows资源管理器以交互方式一样!

using Microsoft.VisualBasic.FileIO;

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

enter image description here

答案 2 :(得分:0)

回收站位于名为\ $ Recycle.Bin \%SID%的隐藏目录中,其中%SID%是执行删除的用户的SID。

基于此,我们可以做到: 添加.NET引用到System.DirectoryServices.AccountManagement

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

现在应该可以根据正在运行的用户帐户访问正确的回收站目录。在Windows 7中工作(已测试)。