如何使用 C# 控制台应用程序获取回收站中的文件列表
How to get the list of file in recycle bin by using c# console application
我正在做作业,使用 shell32.dll 获取回收站的文件数。但是,我很难显示回收站中的文件列表,并且在尝试使用 shell.
时不断收到 System.InvalidCastException
错误
我在Stack Overflow上浏览了很多解决方案,其中大部分都是使用shell32.dll获取回收站的文件列表。
我试过的最新代码如下:
public static void Main(string[] args)
{
Shell shell = new Shell();
Folder folder = shell.NameSpace(0x000a);
foreach (FolderItem2 item in folder.Items())
Console.WriteLine("FileName:{0}", item.Name);
Marshal.FinalReleaseComObject(shell);
Console.ReadLine();
}
此错误很可能是由于您缺少方法中的 STAThread
。以下示例是一个旧测试,它实际上做的事情与您尝试做的事情相同。如果错误出在获取实际名称上,那么我注意到您的名称与我过去的做法不同。我要求文件夹提供有关其文件的具体详细信息。
using Shell32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1101
{
class Program
{
[STAThread()]
static void Main(string[] args)
{
// create shell
var shell = new Shell();
// get recycler folder
var recyclerFolder = shell.NameSpace(10);
// for each files
for (int i = 0; i < recyclerFolder.Items().Count; i++)
{
// get the folder item
var folderItems = recyclerFolder.Items().Item(i);
// get file name
var filename = recyclerFolder.GetDetailsOf(folderItems, 0);
// write file path to console
Console.WriteLine(filename);
}
}
}
}
Here's the help 在 GetDetailsOf
上,如果您需要有关文件的任何其他信息
我正在做作业,使用 shell32.dll 获取回收站的文件数。但是,我很难显示回收站中的文件列表,并且在尝试使用 shell.
时不断收到System.InvalidCastException
错误
我在Stack Overflow上浏览了很多解决方案,其中大部分都是使用shell32.dll获取回收站的文件列表。
我试过的最新代码如下:
public static void Main(string[] args)
{
Shell shell = new Shell();
Folder folder = shell.NameSpace(0x000a);
foreach (FolderItem2 item in folder.Items())
Console.WriteLine("FileName:{0}", item.Name);
Marshal.FinalReleaseComObject(shell);
Console.ReadLine();
}
此错误很可能是由于您缺少方法中的 STAThread
。以下示例是一个旧测试,它实际上做的事情与您尝试做的事情相同。如果错误出在获取实际名称上,那么我注意到您的名称与我过去的做法不同。我要求文件夹提供有关其文件的具体详细信息。
using Shell32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1101
{
class Program
{
[STAThread()]
static void Main(string[] args)
{
// create shell
var shell = new Shell();
// get recycler folder
var recyclerFolder = shell.NameSpace(10);
// for each files
for (int i = 0; i < recyclerFolder.Items().Count; i++)
{
// get the folder item
var folderItems = recyclerFolder.Items().Item(i);
// get file name
var filename = recyclerFolder.GetDetailsOf(folderItems, 0);
// write file path to console
Console.WriteLine(filename);
}
}
}
}
Here's the help 在 GetDetailsOf
上,如果您需要有关文件的任何其他信息