Freien Speicherplatz auf einem Laufwerk ermitteln mit .NET und WMI

Der Dotnet-Doktor  –  0 Kommentare

Um den Füllstand eines Laufwerks zu ermitteln, gibt es seit dem .NET Framework 2.0 in der Klasse DriveInfo die Attribute TotalSize und TotalFreeSpace.

string Laufwerksbuchstabe = @"C:\";
DriveInfo[] Drives = DriveInfo.GetDrives();
DriveInfo Drive = Drives.Where(x => x.Name ==
Laufwerksbuchstabe).SingleOrDefault();
Console.WriteLine("Freier Speicher auf " +
Laufwerksbuchstabe +": " + Drive.TotalFreeSpace +
" von " + Drive.TotalSize);

Allerdings kann man damit nur den Füllstand lokaler Laufwerke ermitteln. Manchmal muss man wissen, wie es um andere Rechner (z. B. den File Server) bestellt ist. Hier hilft die Windows Management Instrumentation (WMI), die in .NET im Namensraum System.Management (Assembly System.Management.dll) zur Verfügung steht. Mit Hilfe der .NET-Klasse ManagementObject besorgt man sich eine Instanz der WMI-Klasse Win32_LogicalDisk.

string Computer = "ITVisionsFileServer14";
string LaufwerksbuchstabeWMI = @"C";
ManagementObject disk = new ManagementObject("\\\\" + Computer
+ "\\root\\cimv2:Win32_LogicalDisk.DeviceID='" +
LaufwerksbuchstabeWMI + ":'");
Console.WriteLine("Freier Speicher auf " +
LaufwerksbuchstabeWMI + ": " + disk.Properties["FreeSpace"].Value +
" von " + Convert.ToInt64(disk.Properties["Size"].Value));

Zu beachten ist, dass der Laufwerksbuchstaben ohne ":\" zu schreiben ist und dass diese Aktion Administratorrechte auf dem Zielsystem erfordert.