none
WPF Harici Harddisk Bilgisi Edinme RRS feed

  • Soru

  • Merhabalar, WPF üzerinde bir uygulama geliştiriyorum ve elimde fotoğrafların olduğu bir harici disk var. Bu harici disk eğer bilgisayarımda takılı değilse program açılmasın, eğer takılı ise gerekli stringler doldurulsun istiyorum. Elimde bir kod var flash bellekler için çalışıyor ancak harici harddisk için çalıştıramadım maalesef. Kodumdaki problem şu; bütün sürücüleri(C,D) okuduğu için onları boş olarak görüyor ve benim sürücüm eğer takılı ise sürücüyü bulana kadar boş değer döndürüp programı kapatıyor.

    DriveInfo[] allDrives = DriveInfo.GetDrives();
                foreach (DriveInfo d in allDrives)
                {
                    try
                    {
                        if (d.VolumeLabel == "Utku")
                        {
                            MessageBox.Show(d.Name + d.VolumeLabel);
                        }
                    }
                    catch
                    {
                        MessageBox.Show("Bilgisayarda takılı Utku sürücüsü yok. Lütfen Utku sürücüsünü takıp tekrar deneyiniz.", "Sürücü Bulunamadı", MessageBoxButton.OK, MessageBoxImage.Error);
                        Environment.Exit(0);
                    }

    Kodum burada. Eğer "Utku" sürücüsü yoksa programı kapat demem gerekiyor biliyorum ancak yine diğer sürücüleri ilk olarak bulduğu için farklı çözümler denemeye çalıştım. Amacım, Utku adlı harici diskin takılı olup olmadığını kontrol etmek eğer takılı ise tam adını öğrenmek örneğin F:Utku gibi. Bunu nasıl yapabilirim acaba. Yardımlarınız için şimdiden teşekkür ederim.

    24 Haziran 2019 Pazartesi 02:40

Yanıtlar

  • Disk adını aşağıdaki kodlarla alabilirsiniz...

    var drives = new ManagementObjectSearcher("Select * from Win32_LogicalDiskToPartition").Get().Cast<ManagementObject>();
                var disks = new ManagementObjectSearcher("Select * from Win32_LogicalDisk").Get().Cast<ManagementObject>();
                foreach (var drive in drives)
                {
                    var driveLetter = Regex.Match((string)drive["Dependent"], @"DeviceID=""(.*)""").Groups[1].Value;
                    var foundDisk = disks.Where((d) => d["Name"].ToString() == driveLetter).FirstOrDefault();
                    MessageBox.Show("Disk Adı : " + foundDisk["VolumeName"]);
                }
    Kendi ihtiyacınıza göre revize edersiniz. if else Utku mevzusunu...

    • Yanıt Olarak İşaretleyen Utku Uludağ 25 Haziran 2019 Salı 12:45
    25 Haziran 2019 Salı 07:57

Tüm Yanıtlar

  • Yardım edebilecek kimse yok mu gerçekten
    24 Haziran 2019 Pazartesi 17:35
  • Disk adını aşağıdaki kodlarla alabilirsiniz...

    var drives = new ManagementObjectSearcher("Select * from Win32_LogicalDiskToPartition").Get().Cast<ManagementObject>();
                var disks = new ManagementObjectSearcher("Select * from Win32_LogicalDisk").Get().Cast<ManagementObject>();
                foreach (var drive in drives)
                {
                    var driveLetter = Regex.Match((string)drive["Dependent"], @"DeviceID=""(.*)""").Groups[1].Value;
                    var foundDisk = disks.Where((d) => d["Name"].ToString() == driveLetter).FirstOrDefault();
                    MessageBox.Show("Disk Adı : " + foundDisk["VolumeName"]);
                }
    Kendi ihtiyacınıza göre revize edersiniz. if else Utku mevzusunu...

    • Yanıt Olarak İşaretleyen Utku Uludağ 25 Haziran 2019 Salı 12:45
    25 Haziran 2019 Salı 07:57
  • Disk adını aşağıdaki kodlarla alabilirsiniz...

    var drives = new ManagementObjectSearcher("Select * from Win32_LogicalDiskToPartition").Get().Cast<ManagementObject>();
                var disks = new ManagementObjectSearcher("Select * from Win32_LogicalDisk").Get().Cast<ManagementObject>();
                foreach (var drive in drives)
                {
                    var driveLetter = Regex.Match((string)drive["Dependent"], @"DeviceID=""(.*)""").Groups[1].Value;
                    var foundDisk = disks.Where((d) => d["Name"].ToString() == driveLetter).FirstOrDefault();
                    MessageBox.Show("Disk Adı : " + foundDisk["VolumeName"]);
                }
    Kendi ihtiyacınıza göre revize edersiniz. if else Utku mevzusunu...

    İlginiz için teşekkür ederim, fazlasıyla işime yaradı. İyi kodlamalar..
    25 Haziran 2019 Salı 12:45