PDA

View Full Version : پیغام خطای بخاطر عدم دسترسی به فایل



amir_pro
جمعه 03 آبان 1387, 01:08 صبح
سلام به دوستان
من با انواع کدهایی که در سایت پیدا کردم و کدهایی که خدوم نوشتم برای اینکه کل یک درایو را جهت جستجوی فایل های مشخصا مثل *.bat پیمایش کنه با پیغام خطای زیر رو به رو شدم

Access to the path 'C:\System Volume Information' is denied

برای رفع این پیغام خطا چکاری باید انجام دهم. روی کامپیوتر خودم فقط یوزر ادمین هست که باهاش کار می کنم.

چرا پیغام عدم دسترسی به یک پوشه را می دهد. در صورتی که برنامه های آنتی ویروس می توانند داخل این پوشه را جست و جو کنند؟

کدهایی که استفاده کردم اینها هستند (هر دو تا را از همینجا پیدا کردم)


ArrayList list = new ArrayList();

private void SearchForFilesAndFolders(string path)
{
listBox1.Items.Add(path);
list.Add(path);
string[] folders = Directory.GetDirectories(path);

foreach (string dir in folders)
{
list.Add(dir);
SearchForFilesAndFolders(dir);
}

foreach (string file in Directory.GetFiles(path))
{
list.Add(file);
listBox1.Items.Add(file);
}
}

private void Form1_Load(object sender, EventArgs e)
{
SearchForFilesAndFolders(@"c:\");
}


string name, path;
path = @"c:\";


if (Directory.Exists(path))
{
string[] Files = Directory.GetFiles(path, "*.jpg", SearchOption.AllDirectories);
foreach (string s in Files)
MessageBox.Show(s);
}

amir_pro
جمعه 03 آبان 1387, 15:23 عصر
با کدهایی که پیدا کردن مشکلم حل شد ولی لطفا یکی از دوستان قسمت دوم کد را توضیح بدهد.
با تشکر


foreach (System.IO.DriveInfo d_Drive in System.IO.DriveInfo.GetDrives())
{
System.Collections.ObjectModel.Collection<System.IO.FileInfo> temp = new System.Collections.ObjectModel.Collection<System.IO.FileInfo>();
foreach (System.IO.FileInfo f_file in GetFiles("*.jpg", d_Drive.RootDirectory, ref temp))
{
listBox1.Items.Add(f_file.Name);
}
}


private System.Collections.ObjectModel.Collection<System.IO.FileInfo> GetFiles(string KeyWord, System.IO.DirectoryInfo root, ref System.Collections.ObjectModel.Collection<System.IO.FileInfo> DefCollection)
{
if (DefCollection == null) DefCollection = new System.Collections.ObjectModel.Collection<System.IO.FileInfo>();
try
{
foreach (System.IO.FileInfo f_file in root.GetFiles(KeyWord, System.IO.SearchOption.TopDirectoryOnly))
{
DefCollection.Add(f_file);
}
foreach (System.IO.DirectoryInfo f_folder in root.GetDirectories())
{
GetFiles(KeyWord, f_folder, ref DefCollection);
}
}
catch
{
}
return DefCollection;
}