[C#] Festplatten auflisten

Saber

Erfahrenes Mitglied
Hallo zusammen!!!

Ich bräuchte den Quelltext dazu, wie man NUR die Festplatte mit C# ausliest, also keine Floppys, CD-ROMs etc.
Ich brauche das ganze für eine Explorer-ähnliche TreeView, allerdings will ich da nur die Festplatten drinnen haben.

Das eigentliche Problem ist folgendes. Ich hab zwar einen Quelltext, der mir das macht. Allerdings benutze ich einen Aufruf von win32_logicaldisk. Danach kann ich die Festplatten filtern. Jedoch scannt diese Funktion ALLE Laufwerke. Das hat die unangenehme Nebenwirkung, dass das 3,5" Laufwerk zu rattern beginnt. Und genau das will ich vermeiden.

Nun, beim Aufruf den Windows Explorers werden auch alle Laufwerke angezeigt, aber da rattert das Floppy nicht. Also muss es gehen.

Meine Frage an Euch: WIE BEKOMME ICH ALLE FESTPLATTEN, OHNE DASS DAS FLOPPY ZU RATTERN BEGINNT???

Vielen Dank im Vorraus!!! :)

MfG
Mike
 
eine Möglichkeit wäre es, mit GetDriveType
zu überprüfen, ob ein Disk-LW oder CDR vorliegt und dass lässt du dann beim Einlesen aus
 
Okay, der Code war in der ganzen Klasse verstreut, aber ich denke im großen und ganzen sollte ich alles zu erwischen. Wenn was fehlen sollte, dann postet einfach noch einmal. :D

Code:
// Laufwerke und Laufwerkstypen abfragen
ManagementScope scope = new ManagementScope (ManagementPath.DefaultPath);
SelectQuery wql = new SelectQuery("Win32_LogicalDisk");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, wql);
			
// Nodes eintragen
foreach(ManagementObject item in searcher.Get())
{
   // Laufwerkstyp selektieren
   if (item["DriveType"].ToString() == "5")
   {
	// CD-/DVD-ROM/Brenner
	node = new TreeNode(item["DeviceID"].ToString() + "\\", 4, 4);
   }
   else if (item["DriveType"].ToString() == "2")
   {
	// Diskette
	node = new TreeNode(item["DeviceID"].ToString() + "\\", 3, 3);
   }
   else
   {
	// Sonstiges
	node = new TreeNode(item["DeviceID"].ToString() + "\\", 0, 0);
   }
   
   Nodes.Add(node);

   // Verzeichnisstruktur aufbauen
   
   if (item["DriveType"].ToString() != "5" &&
   item["DriveType"].ToString() != "2")
   {
      Fill_Directories(node);
   }

   // Festplatte selektieren
   if (item["DeviceID"].ToString() + "\\" == "C:\\")
   {
      SelectedNode = node;
   }
}
 
hm ich versteh nicht ganz wie ich das in mein prog einbauen kann muss ich noch irgendwas #inlcude mässiges dazu machen?
 
Es gibt in C# keinen #include-Befehl, sondern nur den using-Befehl. Dein Befehl stammt aus C/C++.
 
Hmm, in C++ bin ich nicht so bewandet, das kann ich Dir nicht sagen, aber such doch mal in Google.de nach C++ und Win32_LogicalDisk.

*sorry*
 

Neue Beiträge

Zurück