En iyi yanıtlayıcılar
WPF Harici Harddisk Bilgisi Edinme

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.
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
Tüm 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
-
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...