امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
قفل كردن پوشه با كد نويسي
نویسنده پیام
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,497
موضوع‌ها: 270
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1652
( 3938 تشکر در 1453 ارسال )
ارسال: #1
قفل كردن پوشه با كد نويسي
در این مقاله قصد داریم یک فولدر را با استفاده از کد نویسی قفل کنیم بصورتی که کاربر نتواند وارد آن شود.
نمیخواهم که وارد مطالب جانبی از جمله طریقه ی انتخاب فولدر و چیزهای دیگر شوم ، پس کد را در رویداد لود فرم مینویسیم و خودمان آدرس فولدر را مستقیما در کد نویسی وارد میکنیم.
برای قفل کردن فولدر از متدی به نام SetAccessControl موجود در کلاس DirectoryInfo استفاده میکنیم و خود این کلاس نیز در فضای نامی System.IO قرار دارد پس قبل از هر کاری این فضای نامی را معرفی میکنیم.
کد:
using System.IO;
حال یک شی از نوع DirectoryInfo میسازیم و آدرس فولدری که میخواهیم قفل کنیم را به آن میدهیم.

کد:
DirectoryInfo di = new DirectoryInfo("d:\\folder");

اگر متد SetAccessControl مخصوص به di را بنویسید خواهید دید که یک شی از کلاس DirectorySecurity بعنوان پارامتر ورودی از شما میخواهد ، پس یک شی از این کلاس بسازید :d
اما قبل از این کار فضای نامی مخصوص آنرا نیز در بالا معرفی کنید.

کد:
using System.Security.AccessControl;
و
کد:
DirectorySecurity ds = di.GetAccessControl();

کاری که ما تا اینجا انجام دادیم این است که ابتدا فولدر را معرفی کردیم و اکسس کنترل آنرا در شی ds قرار دادیم حالا میتوانیم با استفاده از متد AddAccessRule روی آن قانون دسترسی معرفی کنیم ، پس ابتدا یک قانون دسترسی معرفی می کنیم و آنرا به این متد میدهیم :
کد:
FileSystemAccessRule ar = new
FileSystemAccessRule(Environment.UserDomainName+"\  \"+Environment.UserName,  FileSystemRights.FullControl, AccessControlType.Deny);
ds.AddAccessRule(ar);
دوخط بالا شلوغ به نظر میرسند ، پس توضیح میدهم ، در خط اول برای ساخت یک شی از نوع FileSystemAccessRule باید در پارامتر اول کاربری که میخواهیم این قانون دسترسی به آن نسبت داده شود وارد میکنیم ، که به این صورت عمل میکنیم ابتدا نام کامپیوتر و سپس “\” و نام کاربری را وارد میکنیم که برای کاربر جاری میتوانیم از کلاس Environment کمک بگیریم.
در پارامتر دوم نوع دسترسی مثلا Delete ، Create و غیره را تعریف میکنیم که ما از FullControl استفاده میکنیم و در نهایت هم یا Allow یا Deny را اعمال میکنیم.
به زبان ساده ما گفته ایم کاربر جاری ، هیچ نوع دسترسی به این فولدر ندارد.
در نهایت این قانون دسترسی را با متد AddAccessRule به لیست قوانین این فولد اضافه میکنیم.
جمله ای که بالا گفتم اشتباه است :d ما فقط یک شی از DirectorySecurity ساختیم و به آن قانون اضافه کردیم.
با di.GetAccessControl تنها DirectorySecurity مان را مقدار دهی اولیه کردیم و هنوز به فولدر نسبت داده نشده است پس باید این DirectorySecurity را به فولدر نسبت دهیم :
کد:
di.SetAccessControl(ds);
برای باز کردن مجدد فولد از متد RemoveAccessRule استفاده کنید.
موفق باشید

کد کامل قفل کردن فولدر :

کد:
DirectoryInfo di = new DirectoryInfo("d:\\folder");
2DirectorySecurity ds = di.GetAccessControl();
3FileSystemAccessRule ar = new  FileSystemAccessRule(Environment.UserDomainName+"\  \"+Environment.UserName,  FileSystemRights.FullControl, AccessControlType.Deny);
4ds.AddAccessRule(ar);
5di.SetAccessControl(ds);

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
۱۵-آذر-۱۳۹۲, ۱۵:۰۹:۴۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, lord_viper, javaweb, aliavr1, hamed_Arfaee, mahdi321


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  چگونگی لینک یک فرم به فرمی دیگر در یک پوشه vierso 1 2,368 ۲۸-بهمن-۱۳۹۱, ۲۲:۲۷:۳۲
آخرین ارسال: ajlajlajl
  [سوال] برنامه نويسي براي پورت USB MicroRobo 0 2,380 ۲۴-آبان-۱۳۹۰, ۱۶:۴۹:۲۴
آخرین ارسال: MicroRobo
  اتصال بانك اطلاعاتي به كريستال ريپويت از طريق كد نويسي iran58 1 3,198 ۲۰-مهر-۱۳۸۹, ۲۲:۵۷:۵۸
آخرین ارسال: ajlajlajl
  غيرفعال كردن رديف هاي يك ديتاگريد iran58 0 2,068 ۱۹-تير-۱۳۸۹, ۱۳:۵۲:۲۱
آخرین ارسال: iran58
  چك كردن خالي بودن TextBox iran58 1 6,970 ۲۹-اردیبهشت-۱۳۸۹, ۱۲:۴۹:۲۸
آخرین ارسال: ajlajlajl
  باز كردن سايت از اينترنت اكسپلورر Prof.Farahmand 0 3,798 ۱۷-فروردین-۱۳۸۸, ۱۷:۰۸:۲۸
آخرین ارسال: Prof.Farahmand
Exclamation غير فعال كردن Print Screen از صفحه كليد computer_prospect 21 22,140 ۱۵-فروردین-۱۳۸۸, ۱۳:۱۹:۲۰
آخرین ارسال: esmaeily-hosein
Exclamation غير فعال كردن Print Screen از صفحه كليد computer_prospect 1 4,035 ۲۴-شهریور-۱۳۸۷, ۲۱:۳۷:۵۴
آخرین ارسال: Mamad2003
  به دست آوردن نام پوشه ها و فايلها در برنامه hamidsina 6 6,503 ۱۵-مرداد-۱۳۸۷, ۲۰:۰۵:۱۹
آخرین ارسال: arashrj

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS