Makale Özeti

Bu makalemde sizlere bilgisayarınızda bulunan mantıksal sürücülerin bilgilerine nasıl ulaşılabileceğini, bu bilgiler ile neler yapılabileceğini bahsedeceğim.

Makale

         Merhabalar,

         Bu makalemde sizlere bilgisayarınızda bulunan mantıksal sürücülerin bilgilerine nasıl ulaşılabileceğini, bu bilgiler ile neler yapılabileceğini bahsedeceğim.

          Böyle bir fonksiyonaliteyi uygulamanızda kullanmak istediğinizde eminim ilk aklınıza gelecek yöntem System.Management class'ı ile wmi sorgulayarak sonuca ulaşmaktır. Ancak .Net bu noktada bize wmi kadar çok bilgiye erişime olanak sağlamasa da birçok bilgiye erişim için çok daha kolay bir yöntem sunmaktadır. O da System.IO sınıfı altındaki DriveInfo class'ıdır. Bu class sayesinde sürücünüze ait birçok bilgiyi alabilmekte, bazılarını ise değiştirebilmektesiniz.

İsterseniz şimdi bu sınıf ile neler yapabildiğimizi inceleyelim.

Metod GetDrives() Bu static aynen yukarıda kullanıldığı gibi çağrılabilmektedir. Bu metodun döndürdüğü değer bilgisayarımızda bulunan mantıksal sürücülerin bilgilerinin barındığı DriveInfo nesnesinin bir array'idir.
Özellik AvailableFreeSpace Belirttiğiniz mantıksal sürücüdeki kullanılabilir boş alandır. Dönüş değeri byte cinsinden boş alanı vermektedir.
Özellik DriveFormat Belirtilen mantıksal sürücünün dosya biçimini belirten özelliktir.Örneğin NTFS, FAT32 String tipinde dönüş değeri vardır.
Özellik DriveType Bu özellik belirttiğimiz mantıksal sürücünün ne tipte bir sürücü olduğunu belirtir. Dönüş tipi DriveType tipinden bir enum dur. BU enum'un değerleri CDRom, Fixed, Network, NoRootDirectory, Ram, Removable, Unknown değerlerinde olabilmektedir. Örneğin uygulamalarınızda usb bellek takılıyken uygulamayı çalıştırmak istemediğiniz durumlarda veya sürücülerin başlarına tiplerine göre icon'lar yerleştirmek istediğiniz durumlarda bu özellikten faydalanabilirsiniz.
Özellik IsReady Belirtilen mantıksal sürücünün hazır olup olmadığını belirten özelliktir. Bilhassa sürücüye erişmeye çalıştığınızda "Aygıt hazır değil" şeklinde bir hata alıyorsanız sürücüye erişmeye çalışmadan önce bu özelliği kontrol etmeniz gerekmektedir. Adından da anlaşılabileceği gibi dönüş değeri boolean'dır.
Özellik Name Sürücünün adını veren özelliktir. Örneğin C:\ d:\.
Özellik RootDirectory Sürücünün root klasörünü veren özelliktir. Bu özelliğin tipi DirectoryInfo tipindedir. DirectoryInfo nesnesi ile bir klasör altındaki diğer klasörleri, dosyaları görmek klasör özelliklerini değiştirmek gibi işlemler yapmak mümkündür.
Özellik TotalFreeSpace belirtilen sürücüdeki toplam boş alanı byte olarak vermektedir.
Özellik TotalSize Belirtilen mantıksal sürücünün toplam boyutunun belirtildiği özelliktir. Bu özellikteki değer de yine byte cinsindendir.
Özellik VolumeLabel Bu özellik mantıksal sürücünün etiket değerini bize geri döndürmektedir. Ayrıca bu özelliğe değer set edebilmekteyiz. Set ettiğimiz değer ise sürücünün etiket değeri olarak saklanacaktır.

Şimdi isterseniz bu özelliklerin kullanımı ile ilgili ufak bir örneği inceleyelim.

            foreach (DriveInfo insDriveInfo in DriveInfo.GetDrives())
            {
               
               
Console.WriteLine("Sürücü : " + insDriveInfo.Name);
                Console.WriteLine("Hazır Mı : " + insDriveInfo.IsReady.ToString());
                if (insDriveInfo.IsReady)
                {
                    Console.WriteLine("Etiket : " + insDriveInfo.VolumeLabel);
                    Console.WriteLine("Biçim : " + insDriveInfo.DriveFormat);
                    Console.WriteLine("Tip : " + insDriveInfo.DriveType.ToString());
                    Console.WriteLine("Root : " + insDriveInfo.RootDirectory.ToString());
                    Console.WriteLine("Toplam Alan : " + ConvertToGb(insDriveInfo.TotalSize).ToString() + " GB");
                    Console.WriteLine("Kullanılabilir Boş Alan : " + ConvertToGb(insDriveInfo.AvailableFreeSpace).ToString() + " GB");
                    Console.WriteLine("Toplam Boş Alan : " + ConvertToGb(insDriveInfo.TotalFreeSpace).ToString() + " GB");
                    Console.WriteLine();
                }
            }
            Console.ReadLine();
        }
        static decimal ConvertToGb(long l)
        {
            return Math.Round(Convert.ToDecimal(l) / 1024 / 1024 / 1024,2);
        }


Bu kodun çıktısı ise aşağıdaki gibi olmaktadır.



          Bunun dışındaki bazı bilgilerin,Örneğin hdd seri numarası gibi WMI ile nasıl sorgulanacağını incelemek için Işıl Orhanel'in http://www.yazgelistir.com/Makaleler/1000001312.ygpx adresindeki makalesine bakabilirsiniz.

Umarım faydakı bir makale olmuştur.
Tamer Öz
         tamer.oz@yazgelistir.com
         oztamer@hotmail.com