Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Festplattengröße
Tag auch,
ich würde gerne wissen wie ich in C# rausbekomme wie groß eine Festplatte ist.
Außerdem wieviel Speicher noch frei ist und wenn es geht auch noch eine auflistung der Platten/ Partionen.
Bei Google habe ich etwas Code gefunden, aber es ging überhaupt nicht.
Hier habe ich auch nichts gefunden.
l4nk4b3l
14.05.2010, 18:19
schau dir mal die DriveInfo klasse an
DriveInfo.GetDrives-Methode (System.IO) (http://msdn.microsoft.com/de-de/library/system.io.driveinfo.getdrives.aspx)
danke werde ich morgen mal machen wenn ich die zeit dafür habe.
Du verwendest einfach System.Management.
Musst vorher darauf verweisen ;)
Und hier den Code:
ManagementObject disc = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"" );
disc.Get();
MessageBox.Show("Festplatten Größe = " + disc["Size"] + " bytes");
MessageBox.Show("Freierspeicher = " + disc["FreeSpace"] + "bytes");
//Edit:
Für Megabyte einfach durch 1024 ;)
Naja ich würde hier dennoch wie bereits von l4nk4b3l beschrieben die DriveInfo Klasse verwenden.
Hier eine schnell geschriebene Funktion:
private static long FestplattenGroesse(string LaufwerkBuchstabe)
{
System.IO.DriveInfo di = new System.IO.DriveInfo(LaufwerkBuchstabe);
{
return (((di.TotalSize / 1024) / 1024) / 1024);
}
}Beispiel für den Aufruf:
Console.WriteLine("Die größe der Festplatte \"{0}\" beträgt: {1}", "C:\\", FestplattenGroesse("C:\\"));
Console.Read();Ausgabe:
Die größe der Festplatte "C:\" beträgt: 228 GBMfG, Sawyer
Hey,
danke euch das hat mir sehr geholfen, nun versuche ich es aber mit Array etwas aufzuarbeiten, da ich mehrere Sachen abfragen will, aber ich komm nicht weiter.
private string[] myDisc(string Buchstabe)
{
string[] myDisc = new string[3];
System.IO.DriveInfo di = new System.IO.DriveInfo(Buchstabe);
{
myDisc[0] = (((di.TotalSize / 1024) / 1024) / 1024).ToString();
}
return myDisc;
}
public Cleaner()
{
InitializeComponent();
lblSpeicher.Text = "Die größe der Festplatte beträgt: " + myDisc[0]("C:\\") + " GB";
}
Würde mich über hilfe freuen.
Ich versteh dein Problem nicht.
Wenn du mehrere Sachen im Array Speichern willst (und somit zurückgeben) erhöhe doch einfach den Index und speichere dort den nächsten Datensatz usw.
//Edit:
Das myDisc[0]("C:\\") schaut nicht gut aus.
Wenn das nicht funktioniert mach es am besten so:
string[] disc = myDisc("C:\\");
lblSpeicher.Text = "Die größe der Festplatte beträgt: " + disc[0]("C:\\") + " GB";
Danke, zwar hast du wohl nicht verstanden, was genau ich meine, aber du hast genau das Bearbeitet, was ich meinte.
Hier die Lösung:
private string[] myDisc(string Buchstabe)
{
string[] myDisc = new string[5];
System.IO.DriveInfo di = new System.IO.DriveInfo(Buchstabe);
{
myDisc[0] = di.IsReady.ToString();
if (di.IsReady == true)
{
myDisc[1] = di.DriveType.ToString();
myDisc[2] = di.DriveFormat.ToString();
myDisc[3] = (((di.TotalSize / 1024) / 1024) / 1024).ToString();
myDisc[4] = (((di.AvailableFreeSpace / 1024) / 1024) / 1024).ToString();
}
}
return myDisc;
}
public Cleaner()
{
InitializeComponent();
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
string[] disc = myDisc(d.Name);
if (d.DriveType.ToString() == "Fixed")
{
lsbAusgabe.Items.Add("Festplatte: " + d.Name);
lsbAusgabe.Items.Add("Die größe der Festplatte beträgt: " + disc[3] + " GB");
lsbAusgabe.Items.Add("Der freie Speicher beträgt: " + disc[4] + " GB");
lsbAusgabe.Items.Add("-------------------------------------------------");
}
}
}
Nicht wundern, ich könnte das natürlich einfacher ohne Methode machen, aber wollte es einfach mal testen mit den Arrays.
Sorry für den Doppelpost, aber habe wieder ein Problem
Ich habe hier ein ListView und will z.b. in einem Label wiedergeben welches der User Markiert hat.
Hier mein Code:
private string[] myDisc(string Buchstabe)
{
string[] myDisc = new string[5];
System.IO.DriveInfo di = new System.IO.DriveInfo(Buchstabe);
{
myDisc[0] = di.IsReady.ToString();
if (di.IsReady == true)
{
myDisc[1] = di.DriveType.ToString();
myDisc[2] = di.DriveFormat.ToString();
myDisc[3] = ((di.TotalSize / 1024) / 1024).ToString();
myDisc[4] = ((di.AvailableFreeSpace / 1024) / 1024).ToString();
}
}
return myDisc;
}
[DllImport("uxtheme.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
private static extern int SetWindowTheme(IntPtr hWnd, string appName, string partList);
public Cleaner()
{
InitializeComponent();
ListViewItem myItem;
// Create columns for the items and subitems.
// Set the view to show details.
Tabelle.View = View.Details;
// Allow the user to edit item text.
Tabelle.LabelEdit = false;
// Allow the user to rearrange columns.
Tabelle.AllowColumnReorder = true;
// Display check boxes.
Tabelle.CheckBoxes = false;
// Select the item and subitems when selection is made.
Tabelle.FullRowSelect = true;
// Display grid lines.
Tabelle.GridLines = false;
SetWindowTheme(this.Tabelle.Handle, "explorer", null);
Tabelle.Columns.Add("", 72, HorizontalAlignment.Center);
Tabelle.Columns.Add("Partition", 60, HorizontalAlignment.Center);
Tabelle.Columns.Add("Speicher", 80, HorizontalAlignment.Right);
Tabelle.Columns.Add("Frei", 80, HorizontalAlignment.Right);
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
string[] disc = myDisc(d.Name);
if (d.DriveType.ToString() == "Fixed")
{
myItem = new ListViewItem(d.Name, "1273959727_HP-HDD-Dock-512.png");
myItem.SubItems.Add(d.Name);
myItem.SubItems.Add(disc[3] + " MB");
myItem.SubItems.Add(disc[4] + " MB");
Tabelle.Items.Add(myItem);
}
}
}
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.