C#拒绝访问路径'C:\ Documents and Settings \'

时间:2012-06-09 19:23:51

标签: c# directoryinfo

我正在使用一个简单的DirectoryInfo来获取C盘根目录下的所有目录。但是,我在管理员下运行,我得到路径访问被拒绝的错误,下面是我正在运行的代码。如何解决路径访问问题?

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

4 个答案:

答案 0 :(得分:2)

在较新版本的Windows C:\Document and Settings上是交接点,这是一种文件系统快捷方式。它不是一个普通的目录,这意味着它并不像普通目录那样真正起作用。

如果您在开始 - >运行框中输入C:\Document and Settings,您也会收到拒绝访问错误,因此该程序并不特定。

但是我对它的工作方式感到有些困惑。我认为交接点是到新位置的透明链接,c:\users但显然不是。

修改

在查看重复的问题后,我不那么困惑了。联结点确实链接到新位置c:\users。但是,有一个明确的拒绝acl用于读取连接点以防止任何人使用它来阅读:

  

C:> cacls“Documents and Settings”C:\ Documents and Settings   每个人:(拒绝)(特殊访问:)

                               FILE_READ_DATA

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

C:>

答案 1 :(得分:1)

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

  • UAC正在运行。使用“run as ...”修复
  • 只有在明确拥有所有权时才能访问的文件夹。

答案 2 :(得分:1)

C:\ Document and Settings是一个交接点,另外还有一个交接点 您无法访问放置在C:\ root上的System Volume Information目录。您必须捕获任何安全异常并跳过它以使用您的代码。

答案 3 :(得分:0)

func textFieldDidBeginEditing(textField: UITextField) {
        animateViewMoving(true, moveValue: 100)
}
func textFieldDidEndEditing(textField: UITextField) {
        animateViewMoving(false, moveValue: 100)
}

func animateViewMoving (up:Bool, moveValue :CGFloat){
    var movementDuration:NSTimeInterval = 0.3
    var movement:CGFloat = ( up ? -moveValue : moveValue)
    UIView.beginAnimations( "animateView", context: nil)
    UIView.setAnimationBeginsFromCurrentState(true)
    UIView.setAnimationDuration(movementDuration )
    self.view.frame = CGRectOffset(self.view.frame, 0,  movement)
    UIView.commitAnimations()
}