如何使用 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 helpGetDetailsOf 上,如果您需要有关文件的任何其他信息