访问我刚刚创建的目录时出现 UnauthorizedAccessException

Posted

技术标签:

【中文标题】访问我刚刚创建的目录时出现 UnauthorizedAccessException【英文标题】:UnauthorizedAccessException when accessing a directory I just created 【发布时间】:2012-02-17 00:01:38 【问题描述】:

我正在指定位置创建一个目录,然后我尝试使用 StreamWriter 访问它,但它一直说“访问被拒绝。”

有人知道会发生什么吗?

我的代码是这样的:

    if (!Directory.Exists(dirPath))
        Directory.CreateDirectory(dirPath);
    var a = HasWritePermissionOnDir(dirPath); <- This is only here to see if the value is true and it is.
    tw = new StreamWriter(dirPath);

    public static bool HasWritePermissionOnDir(string path)
    
        var writeAllow = false;
        var writeDeny = false;
        var accessControlList = Directory.GetAccessControl(path);
        if (accessControlList == null)
            return false;
        var accessRules = accessControlList.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));
        if (accessRules == null)
            return false;

        foreach (FileSystemAccessRule rule in accessRules)
        
            if ((FileSystemRights.Write & rule.FileSystemRights) != FileSystemRights.Write) continue;

            if (rule.AccessControlType == AccessControlType.Allow)
                writeAllow = true;
            else if (rule.AccessControlType == AccessControlType.Deny)
                writeDeny = true;
        

        return writeAllow && !writeDeny;
    

完整的堆栈跟踪:

在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.IO.FileStream.Init(字符串路径、FileMode 模式、FileAccess 访问、Int32 权限、Boolean useRights、FileShare 共享、Int32 bufferSize、FileOptions 选项、SECURITY_ATTRIBUTES secAttrs、String msgPath、Boolean bFromProxy、Boolean useLongPath) 在 System.IO.FileStream..ctor(字符串路径、FileMode 模式、FileAccess 访问、FileShare 共享、Int32 bufferSize、FileOptions 选项) 在 System.IO.StreamWriter.CreateFile(字符串路径,布尔附加) 在 System.IO.StreamWriter..ctor(字符串路径,布尔附加,编码编码,Int32 缓冲区大小) 在 System.IO.StreamWriter..ctor(字符串路径) 在 C:\Temp\AlertDemoSolution\AlertDemoSolution\AlertDemoSolution\mysqlUnitTest.cs:line 23 中的 AlertDemoSolution.MySqlUnitTest.TestMethod1() 处

【问题讨论】:

您希望该代码写入什么内容? 【参考方案1】:

StreamWriter 写入文件。 您不能写入目录。

您可能想在目录中创建一个文件。

【讨论】:

DERP!!!非常感谢大佬!!你刚刚提醒我今天要好好睡一觉! :)【参考方案2】:

您不能将 StreamWriter 指向目录。您需要将其指向该目录中文件的 FileStream。

【讨论】:

以上是关于访问我刚刚创建的目录时出现 UnauthorizedAccessException的主要内容,如果未能解决你的问题,请参考以下文章

访问网时出现403 Forbidden错误的原因:

刚安装的Tomcat访问主页时出现500错误

访问从 Reactjs 中的状态创建的数组的数据时出现问题

使用 JDK 1.7 运行播放应用程序时出现 UnsupportedClassVersionError

打开网页时出现403Forbidden是啥意思

Access 2013 - 自定义 Web 应用程序 - 创建时出现“访问被拒绝”错误