اینکه این برنامه به چه دردی می خوره باید بگم همیشه دیدید که وقتی ویروس وارد سیستم میشه میاد خیلی از فایل ها رو به صورت hidden , system و ... می کنه اینجا ما می تونیم از طریق این برنامه اون فایل ها رو به حالت عادی برگردونیم و یا تشخیص بدیم که فایل دارای چه خاصیتی هست 

بعد اینکه تو خیلی از بد افزار ها مخصوصا سری autorun این مشکل بوده که وقتی با windows explorer وارد درایو شدیم اتوماتیک ویروس از طریق فایل autorun.inf وارد سیستم شده و اگه از طریق این برنامه واردش بشید دیگه این مشکل هم وحود نداره 

در مرحله ی اول آموزش نوشتن یک file browser رو داریم که می خوام با کلیک روی هر کدوم از فایل ها بتونم Attribute اون رو تغییر بدم 

اول از همه شروع به نوشتن یک folder browser میکنیم 

برای این کار ما باید رفرنس های Imports System و Imports System.IO رو وارد کنیم 

بعد 3 تا listview می زارم یکی برای لیست کلیه ی درایو ها و یکی برای لیست فولدر ها و دیگری برای فایل 

در listview اول ککه مربوط به لیست دراو ها هست باید کد زیر رو بزنیم 

کد:
    For Each Dir As String In Directory.GetLogicalDrives()
      ListView1.Items.Add(Dir)
    Next

اگه دقت کنید من اینجا اومدم متغیری رو با نام dir از نوع string زدم و گفتم که از متود directory جهت لیست کردن دراو های لوجیکال استفاده کن یعنی getlogicaldrive رو بهش دادم 

و تو خط دوم هم گفتم اون رو داخل listview اضافه کن 

این کد رو باید در form _ load بزنیم که خودش بالا بیاد و اجرا بشه 

حالا می خوام بگم وقتی کلیک کردیم روی هر کدوم از درایو ها لیستی از فولدر های موجودشو بیاره منتها در listview2

کد:
    ListView2.Items.Clear()
    For Each Dir As String In Directory.GetDirectories(ListView1.SelectedItems(0).Text)
      ListView2.Items.Add(Dir)
    Next

خط اول رو زدم که هر بار کلیک جدید لیست رو پاک کنه و از نو بیاد فرامین رو اجرا کنه 

خط دوم مثل بالاست منتها گفتم از متود directory گزینه ی GetDirectories رو انتخاب کردم که میشه لیست فولدر ها 

اما لیست فولدر های کجا ؟ داخل پرانتز زدم ListView1.SelectedItems(0).Text یعنی گزینه ی انتخاب شده listview1

کد بالا رو باید در رویداد SelectedIndexChanged مربوط به lstiview درایو ها بزاریم 

و بعد هم می خوام با کلیک روی لیست فولدر ها لیست فایل های داخل اون هم در داخل listview بعدی ظاهر بشه 

کد:
    ListView2.Items.Clear()
    For Each files In Directory.GetFiles(ListView2.SelectedItems(0).Text)
      ListView3.Items.Add(files)
    Next

که گزینه ی getfiles رو برای متود directory انتخاب کردم

خوب تا اینجا ما اومدیم file / folder browser رو نوشتیم 

حالا می خوایم یک fileattribute changer قوی بنویسیم 

برنامه باید قادر باشه که ویژگی های زیر رو به یک فایل 



Compressed
Device
Directory
Encrypted
Hidden
IntegrityStream
Normal
NoScrubData
NotContentIndexed
Offline
ReadOnly
ReparsePoint
SparseFile
System
Temporary

پس به این تعداد میایم checkbox میزاریم و اسامی بالا رو بهش بدید 

و جهت درک راحت تر یک TExtbox بزارید که آدرس فایل انتخاب شده رو داخل اون بزاره با کد زیر 

کد:
TextBox1.Text = ListView3.SelectedItems(0).Text

حالا میایم میگیم که هر وقت گزینه ی مثلا hidden رو زدیم این ویژگی به فایل داده بشه و اگر تیک برداشته شد این ویژگی رو از بردار و به حالت عادی برگردون با کد زیر 

کد:
if checkhidden.checked=true then
     Dim attribute As System.IO.FileAttributes = FileAttributes.Hidden
   
 File.SetAttributes(TextBox1.Text, FileAttributes.Hidden)

else


     Dim attribute As System.IO.FileAttributes = FileAttributes.normal
   
 File.SetAttributes(TextBox1.Text, FileAttributes.normal)

و به همین ترتیب می تونید به جای گزینه ی hiiden هر کدام از گزینه ای بالا رو انتخاب کنید 

البته باید کمی بیشتر از اینها فرامین شرطی بزارید ولی Base کار همینه دیگه ما بقیه می مونه به خودتون که چقدر خلاقیت داشته باشید

اگه خواستید در مورد این سری attribute که بالا زدم بیشتر بدونید لینک زیر رو ببینید 

http://msdn.microsoft.com/en-us/libr...ttributes.aspx