C# 如何通过编程或命令行将explorer.exe打开到;回收站“;
我想要一个WPF按钮,可以在Windows 7 | 8中直接打开explorer.exe到“回收站”。这是因为我的应用程序会删除很多文件,我想为用户提供一种快速恢复文件的方法。命令行参数不起作用,可能是因为“回收站”是一个虚拟目录。我试过使用“$回收站”。Explorer.exe/root,其中a是虚拟文件失败。试图保护回收站中的空间似乎也不起作用 下面是我测试并正在使用的Scott Powell的工作代码。 谢谢你,斯科特@C# 如何通过编程或命令行将explorer.exe打开到;回收站“;,c#,wpf,windows,C#,Wpf,Windows,我想要一个WPF按钮,可以在Windows 7 | 8中直接打开explorer.exe到“回收站”。这是因为我的应用程序会删除很多文件,我想为用户提供一种快速恢复文件的方法。命令行参数不起作用,可能是因为“回收站”是一个虚拟目录。我试过使用“$回收站”。Explorer.exe/root,其中a是虚拟文件失败。试图保护回收站中的空间似乎也不起作用 下面是我测试并正在使用的Scott Powell的工作代码。 谢谢你,斯科特@ private void ExploreTrashBin (
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 ( );
}
为了实现这一点,您可以执行以下命令:
start shell:RecycleBinFolder
从你可以使用的C代码中
System.Diagnostics.Process.Start("explorer.exe", "shell:RecycleBinFolder");
回收站位于名为\$Recycle.Bin\%SID%的隐藏目录中,其中%SID%是执行删除的用户的SID 基于此,我们可以: 添加对System.DirectoryServices.AccountManagement的.NET引用
string str_RecycleBinDir = UserPrincipal.Current.Sid;
Process.Start("explorer.exe","C:\$Recycle.Bin\" + str_RecycleBinDir);
现在应该能够根据正在运行的用户帐户访问正确的回收站目录。在Windows 7中工作(已测试)。它已在.Net中的Microsoft.VisualBasic.FileIO.FileSystem类中实现(因此C#本机支持使用) 这样,您就不需要运行shell命令:只需以编程方式删除文件/文件夹,就像使用Windows资源管理器以交互方式删除文件/文件夹一样
using Microsoft.VisualBasic.FileIO;
FileSystem.DeleteFile(...)
FileSystem.DeleteDirectory(...)
最好向我们展示一些代码感谢Scott Powell提出的上述建议,即使用帐户管理来恢复SID,并在真实目录而不是虚拟目录中打开资源管理器。请不要将代码放在注释中,并将代码示例放在注释中。Scott Chamberlain:doneWorks就像一个魔咒!私有void ExploreTrashBin(){String str\u recyclebinir=String.Format(@“C:\$Recycle.Bin\{0}”,UserPrincipal.Current.Sid);Boolean suces=Process.Start(“explorer.exe”,str\u recyclebinir);}我不喜欢这样-你是基于回收站的一个实现细节,这个细节在未来的Windows版本中可能会改变。@Dai我真的怀疑微软在未来的版本中会改变这样的东西。即使它真的发生了变化,也需要更新一行代码,仅此而已。一个非常简单的更改。不要让
Microsoft.VisualBasic
名称空间让您感到不快。从C#代码中使用是非常好的。