C# Windows 7库和目录结构

C# Windows 7库和目录结构,c#,winforms,windows-7,directory-structure,.net,C#,Winforms,Windows 7,Directory Structure,.net,我正在加载一个包含目录和子目录的树视图。我呼吁: string[] dirs = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); 返回所有我想要的目录和一些我不想要的目录。。。像不可访问/虚拟的“我的音乐”、“我的视频”等…由于库结构(拒绝访问),我当然无法在这些目录中进行任何递归 如何避免填充这些无法访问的目录?如果操作系统是Vista或7,我可以遍历数组并

我正在加载一个包含目录和子目录的树视图。我呼吁:

string[] dirs = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
返回所有我想要的目录和一些我不想要的目录。。。像不可访问/虚拟的“我的音乐”、“我的视频”等…由于库结构(拒绝访问),我当然无法在这些目录中进行任何递归

如何避免填充这些无法访问的目录?如果操作系统是Vista或7,我可以遍历数组并删除不需要的目录,然后将其留给XP。。。但我想知道是否有更“优雅”的解决方案

在Wim的帮助下,我想出了这个:

    private List<string> MyDocuments()
    {
        List<string> dirs = new List<string>(Directory.GetDirectories(
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)));

        for (int i = 0; i < dirs.Count-1; i++)
        {
            DirectoryInfo di = new DirectoryInfo(dirs[i]);
            if (di.Attributes.HasFlag(FileAttributes.ReparsePoint))
                dirs.RemoveAt(i);
        }

        return dirs;
    }
private List MyDocuments()
{
List dirs=新列表(Directory.GetDirectories(
GetFolderPath(Environment.SpecialFolder.MyDocuments));
对于(int i=0;i
这些目录似乎都是隐藏的,并且有一个
repassepoint
属性(要求它们为空,请阅读msdn中的更多信息,并查看如何执行)

我理解搜索优雅代码的必要性,但问题是,您可以迭代每个目录并检查此属性,随后跳过将其添加到数组或目录列表中,但这不如迭代dirs数组、捕获异常并删除条目优雅。因此,简而言之,我坚持:

List<string> dirs = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)).ToList();
string[] mySubDirs;

for (int i = 0; i < dirs.Count-1; i++)
{
    try
    {
        mySubDirs = Directory.GetDirectories(dirs[i]);
    }
    catch (Exception)
    {
        dirs.RemoveAt(i);
    }
}
List dirs=Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)).ToList();
字符串[]mySubDirs;
对于(int i=0;i
您所说的“无法访问”是什么意思?返回的结构包含“我的文档\\我的音乐”。。。。这是vista和7上的vitual。。。如果您试图访问该路径中的任何内容,您会遇到访问冲突…我应该说返回的是“路径”…而不是结构…这很可能是版权问题。确保您以管理员身份运行Visual Studio,然后再次运行/调试。特殊球员不应该再让你难受了。没有懦夫。。。这不是访问权限。。。如果您运行的windows vista或7使用上述代码,并看到它返回“我的音乐”,它不存在于vista和7上的“我的文档”中…与库结构有关…感谢您的阅读!我测试了一些想法后会回来的!在我看得更清楚之前,您提供的信息会引导我找到我在上面发布的内容