¿Cómo puedo obtener la lista de unidades lógicas (C#) en un sistema, así como su capacidad y espacio libre?Obteniendo una lista de unidades lógicas
Respuesta
Puede recuperar esta información con Windows (WMI)
using System.Management;
ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
// Loop through each object (disk) retrieved by WMI
foreach (ManagementObject moDisk in mosDisks.Get())
{
// Add the HDD to the list (use the Model field as the item's caption)
Console.WriteLine(moDisk["Model"].ToString());
}
Theres más información aquí sobre el atributo puede sondear
http://www.geekpedia.com/tutorial233_Getting-Disk-Drive-Information-using-WMI-and-Csharp.html
No puedo hacer que esto funcione en mi computadora. System.Management ahora no tiene la clase ManagementObjectSearcher. La URL tampoco apunta a una página web válida. –
Necesita agregar una referencia para eso. En Visual Studio, haga clic con el botón derecho en el proyecto y luego vaya a Agregar -> Referencia. Luego, busca "System.Management" y agrégalo. – Gippeumi
Su ejemplo tiene más robusto, pero aquí está el quid de la cuestión
string[] drives = System.IO.Directory.GetLogicalDrives();
foreach (string str in drives)
{
System.Console.WriteLine(str);
}
También P/Invoke y podría llamar a la función Win32 (o usarlo si estás en código no administrado).
Eso solo obtiene una lista de las unidades, sin embargo, para obtener información acerca de cada una, le conviene usar GetDrives como lo demuestra Chris Ballance.
foreach (var drive in DriveInfo.GetDrives())
{
double freeSpace = drive.TotalFreeSpace;
double totalSpace = drive.TotalSize;
double percentFree = (freeSpace/totalSpace) * 100;
float num = (float)percentFree;
Console.WriteLine("Drive:{0} With {1} % free", drive.Name, num);
Console.WriteLine("Space Remaining:{0}", drive.AvailableFreeSpace);
Console.WriteLine("Percent Free Space:{0}", percentFree);
Console.WriteLine("Space used:{0}", drive.TotalSize);
Console.WriteLine("Type: {0}", drive.DriveType);
}
tal vez esto es lo que quiere:
listBox1.Items.Clear();
foreach (DriveInfo f in DriveInfo.GetDrives())
listBox1.Items.Add(f);
Es posible que también desee comprobar la propiedad IsReady –
Esta es una maravillosa pieza de código.
ObjectQuery query =
new ObjectQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3"); // Create query to select all the hdd's
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, query); // run the query
ManagementObjectCollection queryCollection = searcher.Get(); // get the results
string sVolumeLabel = "";
string[,] saReturn = new string[queryCollection.Count, 7];
int i = 0; // counter for foreach
foreach (ManagementObject m in queryCollection)
{
if (string.IsNullOrEmpty(Convert.ToString(m["VolumeName"]))) { sVolumeLabel = "Local Disk"; } else { sVolumeLabel = Convert.ToString(m["VolumeName"]); } // Disk Label
string sSystemName = Convert.ToString(m["SystemName"]); // Name of computer
string sDriveLetter = Convert.ToString(m["Name"]); // Drive Letter
decimal dSize = Math.Round((Convert.ToDecimal(m["Size"])/1073741824), 2); //HDD Size in Gb
decimal dFree = Math.Round((Convert.ToDecimal(m["FreeSpace"])/1073741824), 2); // Free Space in Gb
decimal dUsed = dSize - dFree; // Used HDD Space in Gb
int iPercent = Convert.ToInt32((dFree/dSize) * 100); // Percentage of free space
saReturn[i,0] = sSystemName;
saReturn[i,1] = sDriveLetter;
saReturn[i,2] = sVolumeLabel;
saReturn[i,3] = Convert.ToString(dSize);
saReturn[i,4] = Convert.ToString(dUsed);
saReturn[i,5] = Convert.ToString(dFree);
saReturn[i,6] = Convert.ToString(iPercent);
i++; // increase counter. This will add the above details for the next drive.
}
- 1. iPhone - Recuperación de recursos para pruebas de unidades lógicas
- 2. Obteniendo una lista de tiendas magento
- 3. SQL Alchemy - Obteniendo una lista de tablas
- 4. Obteniendo una lista pura de 'pyparsing.ParseResults'
- 5. obteniendo los límites de una lista de puntos x, y
- 6. Obteniendo una lista de físicos estadounidenses de DBpedia usando SPARQL
- 7. Obteniendo una lista de clases que incluyen un módulo
- 8. Obteniendo una lista de archivos en sass/compass
- 9. Obteniendo una lista de modelos relacionados en rieles
- 10. Una mejor manera de contar la longitud de una lista de unidades
- 11. Obteniendo la lista de soluciones en Prolog
- 12. Interfaces en diferentes capas lógicas
- 13. pitón obteniendo una lista de valor de la lista de dict
- 14. ¿Cómo obtener partes lógicas de una oración con java?
- 15. Soporte de variables lógicas para .NET
- 16. C# - Evaluar fórmulas lógicas de Excel
- 17. Pruebas de aplicación VS Pruebas lógicas
- 18. Cómo hacer pruebas lógicas para todos los elementos de lista en mathematica
- 19. Obteniendo la posición ordenada ¿Lista ordenable JQuery?
- 20. Obteniendo la lista Recepients en MFMailComposeViewController
- 21. Lua - Operaciones lógicas de bit a bit
- 22. ¿Cómo puedo obtener una lista de unidades organizativas de Active Directory?
- 23. Utilizando C# para obtener una lista de ACL para servidores y unidades mapeadas
- 24. Conversión de unidades en Python
- 25. Obteniendo una lista de espacios de trabajo en una máquina específica con p4
- 26. Obteniendo una lista de métodos accesibles para una clase dada a través de la reflexión
- 27. Reemplazar unidades de función
- 28. Obteniendo la lista de campos de 'use fields' pragma?
- 29. diferencias lógicas en C y Java
- 30. Unidades iTextSharp
Es algo nuevo que se ha agregado en la última versión de .NET. Escribí una pequeña aplicación para mostrar esto hace años pero tuve que ir a la ruta WMI en ese momento. Muy útil para saber de todos modos ... ovaciones –
Perfecto ... gracias – PaulB
Vista rápida en MSDN: se agregó en .NET 2.0. – Richard