C# Laufwerksbuchstaben und Speicherplatz anzeigen

eightcore

Lt. Commander
🎅Rätsel-Elite ’24
Registriert
Juli 2008
Beiträge
1.679
Guten Tag.

Ich programmiere eine App, die zur Verwaltung des USB-Sticks dient.
Gibt es eine Möglichkeit, den Laufwerksbuchstaben des USB-Sticks anzeigen zu lassen und wieviel Speicher noch frei ist?

Ich programmiere mit Visual Studio 2010.


MfG | eightcore
 
google spuckt da glaub ich halbwegs brauchbare sachen aus...

http://dotnet-snippets.de/dns/wechseldatentraeger-cd-netzwerklaufwerke-hdd-abfragen-SID443.aspx

so kannst du nur wechseldatenträger auslesen...

für den speicherplatz gibts sicher auch noch das ein oder andere codesnippet ;)

edit:

anhand des zuvor ausgelesenen laufwerksbuchstaben kannst du dann folgendermaßen den freien speicherplatz ermitteln:

using System;
using System.Management;

....

ManagementObjectSearcher query;
ManagementObjectCollection queryCollection;
System.Management.ObjectQuery oq;
string stringMachineName = "localhost";

//Connect to the remote computer
ConnectionOptions co = new ConnectionOptions();

//Point to machine
System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" + stringMachineName + "\\root\\cimv2", co);

oq = new System.Management.ObjectQuery("SELECT * FROM Win32_LogicalDisk WHERE DeviceID = 'C:'");
query = new ManagementObjectSearcher(ms,oq);
queryCollection = query.Get();
foreach ( ManagementObject mo in queryCollection)
{
Console.Writeline(mo["FreeSpace"].ToString());
}
 
Zuletzt bearbeitet:
Probiers mal mit DriveInfo, dazu brauchst du den System.IO Namespace. Damit lässt sich so ziemlich jede Info über laufwerke auslesen.

using System;
using System.IO;

class Test
{
public static void Main()
{
DriveInfo[] allDrives = DriveInfo.GetDrives();

foreach (DriveInfo d in allDrives)
{
Console.WriteLine("Drive {0}", d.Name);
Console.WriteLine(" File type: {0}", d.DriveType);
if (d.IsReady == true)
{
Console.WriteLine(" Volume label: {0}", d.VolumeLabel);
Console.WriteLine(" File system: {0}", d.DriveFormat);
Console.WriteLine(
" Available space to current user:{0, 15} bytes",
d.AvailableFreeSpace);

Console.WriteLine(
" Total available space: {0, 15} bytes",
d.TotalFreeSpace);

Console.WriteLine(
" Total size of drive: {0, 15} bytes ",
d.TotalSize);
}
}
}
}


http://msdn.microsoft.com/de-de/library/system.io.driveinfo.aspx

Gruß
 
Zuletzt bearbeitet:
Und wie kann ich herausfinden, auf welchem Volume das Programm läuft?
 
raptor trx schrieb:
check die Frage nicht ganz, welches Programm denn, deine o.g. App?

Ja genau.
Das Programm, das ich am schreiben bin, soll herausfinden, von welchem Volume aus es ausgeführt ist (d.h. der Stick).
 
könnte so sein:

Code:
System.IO.DriveInfo drive = new System.IO.DriveInfo(AppDomain.CurrentDomain.BaseDirectory.Substring(0, 1));
Console.WriteLine("{0} ({1}): {2}", drive.Name, drive.VolumeLabel, drive.DriveType);

drive.Type würde beim USB Stick System.IO.DriveType.Removable sein. Wäre aber auch bei einer externen Platte oder Speicherkarte so.

Vielleicht hilfts...
 
Ich habe es nun so gemacht:

DriveInfo freespace = new DriveInfo(this.sCurrentDrive);
FreeSpace.Text = (freespace.AvailableFreeSpace / 1024 / 1024).ToString()

Vielen Dank für die Hilfe.
 
Zurück
Oben