| 

.NET C# Java Javascript Exception

4
Wie kann ich über WMI (Windows management Instrumentation) die Laufwerkstypen abfragen?
News:
04.03.2011
Maxx 63 1 4
Welche Information genau möchtest Du denn haben? Ob es ein CD, HD o.ä ist?
Jorgen Schumann 04.03.2011
2 Antworten
5
Du kannst per WMI-Query die lokalen Laufwerke abfragen und dann von den ManagementObjekten entweden die: Description oder DriveType auswerten.

Beispiel:

public static void ListDriveTypes()
{
string wmiQuery = "SELECT * FROM Win32_LogicalDisk";
var managementObjectSearcher = new ManagementObjectSearcher(wmiQuery);

foreach (ManagementObject m in managementObjectSearcher.Get())
{
Console.WriteLine(m.Properties["Description"].Value.ToString());
}
}
04.03.2011
Jorgen Schumann 1,6k 2 9
2
WMI definiert mehrere Klassen bzgl Laufwerkseigenschaften (physisch und logisch), sodass für mich nicht ganz klar ist, worauf sich die Frage bezieht:

Win32_LogicalDisk
Win32_Volume

Für Laufwerke
Win32_DiskDrive
Win32_DiskPartition

Für Netzwerklaufwerke
Win32_MappedLogicalDisk

Andererseits gibt es auf die .Net Klasse DriveInfo, deren DriveType Eigenschaft eine gemappte Enumeration der Win32 DriveTypes ist.

Console.WriteLine("Win32_LogicalDisk");
foreach (var obj in new ManagementObjectSearcher("select * from Win32_LogicalDisk").Get())
{
Console.WriteLine(
obj.Properties["Caption"].Value.ToString() + " " +
((DriveType)(UInt32)obj.Properties["DriveType"].Value).ToString());
}

Console.WriteLine("Win32_Volume");
foreach (var obj in new ManagementObjectSearcher("select * from Win32_Volume").Get())
{
Console.WriteLine(
obj.Properties["Caption"].Value.ToString() + " " +
((DriveType)(UInt32)obj.Properties["DriveType"].Value).ToString() + " " +
(obj.Properties["Label"].Value ?? "").ToString());
}

Console.WriteLine("DriveInfo.GetDrives");
foreach (var d in DriveInfo.GetDrives())
{
Console.WriteLine(d.Name + " " + d.DriveType.ToString());
}



Die Info über WMI Klassen lässt sich am einfachsten in PowerShell mittels
Get-WmiObject Win32_Klassenname
bzw
Get-WmiObject Win32_Klassenname | Get-Member
herausfinden.
27.03.2011
devio 302 3

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH