在路径C#访问 'C:\\的Documents and Settings' 被拒绝(

2019-09-17 23:49发布

我用一个简单DirectoryInfo抢在C驱动器的根目录的所有。 不过,我在管理员运行,我得到的剥夺路径访问错误,下面是我运行的代码。 如何解决的路径访问的问题?

DirectoryInfo Dinfo = new DirectoryInfo(@"C:\");
DirectoryInfo[] directories = Dinfo.GetDirectories("*.*", SearchOption.AllDirectories);

Answer 1:

在新版本的Windows C:\Document and Settings是一个结点 ,类型的文件系统的快捷方式。 这不是一个正常的目录,这意味着,它并没有真正的工作作为一个正常的目录。

如果您在输入C:\Document and Settings在开始- >运行中,您将还可以得到一个拒绝访问的错误,所以它是没有什么特定的程序。

我有点迷茫了这是如何工作不过。 我以为结点会是一个透明的链接到新的位置是c:\users ,但显然不是。

编辑

看着重复的问题后,我少困惑。 结点真的链接到新的位置是c:\users 。 然而,对于阅读的结点,以防止任何人用它来阅读的东西的明确拒绝访问控制列表:

C:> CACLS “文件和设置” C:\ Documents和设置所有人:(拒绝)(特殊访问:)

  FILE_READ_DATA Everyone:R NT AUTHORITY\SYSTEM:F BUILTIN\Administrators:F 

C:>



Answer 2:

如果您以管理员身份运行您可能还是会遇到

  • UAC活跃。 通过使用修复“运行方式...”
  • 文件夹,你只能访问,当你明确地取得所有权。


Answer 3:

C:\文件和设置是一个结点和additionnally您不能访问的System Volume Information directory.which被放置在C:\根,你必须捕获任何安全性异常,并跳过它的工作代码。



Answer 4:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;

namespace Solution
{
    public class Program
    {
 static void Main(string[] args)
        {
            DirSearch(@"YOUR PATH");
            Console.ReadKey();
        }

        static void DirSearch(string dir)
        {
            try
            {
                foreach (string f in Directory.GetFiles(dir))
                    Console.WriteLine(f);
                foreach (string d in Directory.GetDirectories(dir))
                {
                    Console.WriteLine(d);
                    DirSearch(d);
                }

            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}


文章来源: C# Access to the path 'C:\\Documents and Settings\\' is denied