PDA

View Full Version : تشخیص محدود بودن دسترسی به یک فایل یا فولدر



niloo17
دوشنبه 10 آبان 1389, 08:14 صبح
سلام دوستان
چه جوری می شه تشخیص داد دسترسی به یک فایل یافولدر محدود است
مثلا برای به دست اوردن لیست فایل های یک فولدر Directory.GetDirectories() از این دستور استفاده می کنیم ولی بعضی از فولدر ها دسترسی به انها محدود است و خطای زیر را می ده

Access to the path 'C:\Documents and Settings' is denied.


چه جوری می شه از این خطا جلوگیری کرد
ممنون از راهنماییتون

niloo17
دوشنبه 10 آبان 1389, 09:24 صبح
خودم پیدا کردم :تشویق::چشمک:


FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
f2.Demand();
}

ali_autumnal
دوشنبه 10 آبان 1389, 22:18 عصر
با سلام

خواستم کد رو کامل کنم:




using System.IO;




با فرض اینکه 8 عدد CheckBox با نام های:
chkArchive و chkCompressed و chkHidden و chkNormal و chkProtected و chkReadOnly و chkSystem و chkTemporary

داریم. تابع زیر دقیقا این کار رو انجام میده:




private void ReadAttributes()
{
try
{
string filePath=@"C:\File or folder name";
chkArchive.Checked = ((File.GetAttributes(filePath) & FileAttributes.Archive) == FileAttributes.Archive);
chkCompressed.Checked = ((File.GetAttributes(filePath) & FileAttributes.Compressed) == FileAttributes.Compressed);
chkHidden.Checked = ((File.GetAttributes(filePath) & FileAttributes.Hidden) == FileAttributes.Hidden);
chkNormal.Checked = ((File.GetAttributes(filePath) & FileAttributes.Normal) == FileAttributes.Normal);
chkProtected.Checked = ((File.GetAttributes(filePath) & FileAttributes.System) == FileAttributes.System) && ((File.GetAttributes(filePath) & FileAttributes.Hidden) == FileAttributes.Hidden);
chkReadOnly.Checked = ((File.GetAttributes(filePath) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly);
chkSystem.Checked = ((File.GetAttributes(filePath) & FileAttributes.System) == FileAttributes.System);
chkTemporary.Checked = ((File.GetAttributes(filePath) & FileAttributes.Temporary) == FileAttributes.Temporary);
}
catch
{
}
}




خوب حالا با کد زیر Attribute هر File or Folder رو میتونی تغییر بدی:




FileInfo file = new FileInfo(@"C:\File or Folder Name");

for example:
file.Attributes = FileAttributes.Normal;

or "Super Hidden" :
file.Attributes=FileAttributes.System ^ FileAttributes.ReadOnly ^ FileAttributes.Hidden ^ FileAttributes.Archive;

or:
file.Attributes=FileAttributes.System ^ FileAttributes.ReadOnly;

and...

موفق باشید
علی پاییزی