使用 C# 列出回收站中的文件名,而不使用任何外部文件

fee*_*all 5 c# recycle-bin file list

我想要一个函数,它使用 c# 代码检索回收站中的文件名(在 win 7 上)。该框架似乎没有任何内容可以实现这一点。

Directory.Getfiles()对它不起作用,是吗?

我发现自己有一个使用“windows shell32 自动化”的代码,但这需要提供 interop.shell32.dll,它必须与我的应用程序一起重新分发。由于我的应用程序应该独立工作(只要用户计算机上存在 Net Framework 2),这个解决方案并不理想。这个解决方案对我来说似乎也不可靠,因为它使用 COM 自动化并且一些引用可能会失败或调用 Namespace(10) 可能会失败。我什至不确定 Namespace(10) 是否总是适合回收站的文件夹。这段代码是我在 C# 中找到的所有内容。

我在代码项目中找到了 Delphi 和另一个实现,但是如果我在我的 C# 项目中复制该代码,它实际上全是红色下划线,并且无法编译。我不确定如何更正此代码以使其在 C# 中使用。在 pinvoke.net 上,我没有找到我必须使用的 windows 函数的代码 (SHQueryRecycleBin),但也许我必须使用更多函数才能从回收站中获取文件列表。

有没有人看到代码或任何想法?

sa_*_*213 6

如果您C:\Windows\System32\Shell32.dll在应用程序中添加引用,您可以轻松访问 Recyle Bin 中文件的文件名

例子:

    using Shell32;

    public IEnumerable<string> GetRecycleBinFilenames()
    {
        Shell shell = new Shell();
        Folder recycleBin = shell.NameSpace(10);

        foreach (FolderItem2 recfile in recycleBin.Items())
        {
            // Filename
            yield return recfile.Name;

            // full recyclepath
            // yield return recfile.Path;
        }

        Marshal.FinalReleaseComObject(shell);
    }
Run Code Online (Sandbox Code Playgroud)

如果创建的额外文件打扰您,您可以将其嵌入到可执行文件中

在此处输入图片说明