نقل قول نوشته شده توسط qasemf مشاهده تاپیک
ببینید مشکل این هست که زمانی که میخواد دایرکتوری های یک درایو رو یکی یکی بخونه به دایرکتوری system volume information و recyclebin میرسه پیغام access denied میده!! خیلی جستجو زدم معمولا گفته بودن باید از try catch استفاده کرد اما باز هم جواب نمیده به روش های مختلف این کار رو کردم اما نشده این هم یکی از نمونه هایی هست که تست کردم و جواب نمیده

foreach (var drive in drives)
{
if (drive.IsReady)
{
try
{
var allFiles = Directory.GetFiles(drive.ToString(), ".*", SearchOption.AllDirectories);
FileList.Items.Add(allFiles.ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}

یه راه ساده تری هم وجود داره اینکه از لینک استفاده کنید و اگر پوشه سیستمی بود سلکت نکنید من توی یکی از برنامه هام به این صورت استفاده کردم
foreach (var item in dir.GetDirectories()
.Where(s => !s.Attributes.HasFlag(FileAttributes.System))
.Where(s => !s.Attributes.HasFlag(FileAttributes.Hidden))
{
Console.WriteLine(item.Name + " Deleted");
item.Delete(true);
}