【问题标题】:Access denied for "C:\"“C:\”的访问被拒绝
【发布时间】:2012-09-05 21:46:51
【问题描述】:

我制作了一个应该显示文件系统树的程序。我将它设置为显示来自 C: 的文件系统。当我编译程序时说C: 的访问被拒绝。告诉我你需要什么,以防你帮助我,我会为你提供所需的信息。谢谢!

附:当我将程序设置为在C:\Windows\ 中列出文件系统时,它起作用了。

这是我使用的代码:

private void ListDirectory(TreeView treeView, string path)
{
    treeView.Nodes.Clear();
    var rootDirectoryInfo = new DirectoryInfo(path);
    treeView.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo));
}

private static TreeNodeCreateDirectoryNode(DirectoryInfo directoryInfo)
{
    var directoryNode = new TreeNode(directoryInfo.Name);
    foreach (var directory in directoryInfo.GetDirectories())
        directoryNode.Nodes.Add(CreateDirectoryNode(directory));
    foreach (var file in directoryInfo.GetFiles())
        directoryNode.Nodes.Add(new TreeNode(file.Name));
    return directoryNode;
}

在程序中,调用我使用的方法:

mainWindow(){
    InitialiseComponent();
    ListDirectory(treeView1, @"C:\");
}

【问题讨论】:

  • 你能贴出你代码的相关部分吗?
  • 是否以管理员权限运行(右键输出 exe,以管理员身份运行)工作?
  • 不知道为什么你锁得这么快。也许下次给他时间添加/改进他的问题。
  • @Guys,如果您需要管理员权限来读取驱动器的根目录,那么您在访问文件系统的其余部分时会遇到严重问题。只是说。
  • Markdown 欺骗了我。您使用的是C: 还是C:\

标签: c#


【解决方案1】:

此代码将在执行它的用户帐户下运行。根据该帐户的权限,某些目录(例如用户帐户文件夹或回收站)可能会出现 System.UnauthorizedAccessException

这不会阻止您在目录结构中导航,但会阻止该帐户读取受保护文件夹内的所有目录。

您可以使用directoryInfo.GetAccessControl()pull the access control list 编写代码

或者你可以赶上System.UnauthorizedAccessException。那么您的代码可能如下所示:

try
{
    var directoryNode = new TreeNode( directoryInfo.Name );
    foreach ( var directory in directoryInfo.GetDirectories() )
        directoryNode.Nodes.Add( CreateDirectoryNode( directory ) );
    foreach ( var file in directoryInfo.GetFiles() )
        directoryNode.Nodes.Add( new TreeNode( file.Name ) );
    return directoryNode;
}
catch ( System.UnauthorizedAccessException )
{
    return new TreeNode( "Unavailable Node" );
}
catch ( System.IO.PathTooLongException )
{
    return new TreeNode( "Unavailable Node" );
}

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多