C# 查找共享特殊文件夹(虚拟文件夹)中的所有文件

C# 查找共享特殊文件夹(虚拟文件夹)中的所有文件,c#,windows,file,special-folders,C#,Windows,File,Special Folders,我正在寻找一种方法来查找共享特殊文件夹(虚拟文件夹)中的所有文件。 例如,桌面是一个共享文件夹,所有用户都有一个公共的桌面,还有一个私有的桌面。通过使用文件资源管理器导航到桌面,您将看到两台桌面的内容合并在一起 例如: 所有人的共享文件夹: dir C:\Users\Public\Desktop Testfile1 Testfile2 当前用户的文件夹: dir C:\Users\usera\Desktop Testfile3 Testfile4 现在我想通过循环C:\Users\user

我正在寻找一种方法来查找共享特殊文件夹(虚拟文件夹)中的所有文件。 例如,
桌面
是一个共享文件夹,所有用户都有一个公共的
桌面
,还有一个私有的
桌面
。通过使用文件资源管理器导航到
桌面
,您将看到两台桌面的内容合并在一起


例如:

所有人的共享文件夹:

dir C:\Users\Public\Desktop
Testfile1
Testfile2
当前用户的文件夹:

dir C:\Users\usera\Desktop
Testfile3
Testfile4
现在我想通过循环
C:\Users\usera\Desktop
来获取从
Testfile1
Testfile4
的所有文件

有人知道如何获得合并在一起的两个目录的文件列表吗? 不仅对于桌面,还有其他文件夹的行为方式也一样


伪代码:

arrayDesktop = FunctionThatGetsAllFilesFrom(@"C:\Usera\Desktop");
foreach (var file in arrayDesktop)
{
    Console.WriteLine(file);
}
现在应该打印出来了

Testfile1
Testfile2
Testfile3
Testfile4

它们是文件系统上的独立文件夹。Windows只是将两者结合起来显示在桌面上。您必须从两个文件夹中获取所有文件,并将它们合并到一个列表中

您可以使用获取给定文件夹中的文件列表


一旦您拥有两个文件夹中的文件,就可以将它们与Linq扩展方法相结合。

使用
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory)
分别获取桌面和公共桌面上的文件


对于其他虚拟文件夹,您可以查看。但是您仍然需要自己合并所有文件。

这不是经过测试的代码,所以请原谅任何错误,但这应该足以让您开始

foreach (string dir in Directory.GetDirectories(@"c:\Users"))
{
    string fullDir = Path.Combine(dir, "Desktop");

    if (Directory.Exists(fullDir))
    {
        foreach (string file in Directory.GetFiles(fullDir))
        {
            Console.WriteLine(file);
        }
    }
}
除非您是以管理员身份运行此程序,否则您可能会遇到安全问题,即无法读取目录。在本例中,您将需要
System.Net.NetworkCredential
对象,并将管理员帐户存储在本地缓存中—类似于这样

NetworkCredential credential = new NetworkCredential(username, password, domain);
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(@"\\computer-uri"), "Basic", credential);

作为参考,这些类型文件夹的正式名称为。不要与(同名!)混淆,我知道这是两个独立的文件夹,问题是不仅有桌面共享,还有其他文件夹。我不想全部检查。我想知道是否有一种方法可以为我进行“合并”。正如我之前所说的,我不仅想要桌面,我还想要其他
VirtualFolders
您可以在文档中找到其他虚拟文件夹。我编辑了我的答案以反映这一点。这与问题不符。您的代码仅适用于桌面。@恩,似乎其他人也犯了同样的“错误”,您的问题令人困惑。也许你能提供一些伪代码来告诉我们你在寻找什么?