Làm cách nào để có danh sách các ổ đĩa logial (C#) trên hệ thống cũng như dung lượng và dung lượng trống của chúng?Lấy danh sách các ổ đĩa logic
Trả lời
Bạn có thể lấy thông tin này với Windows Management Instrumentation (WMI) thông tin
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 thêm ở đây về các thuộc tính bạn có thể thăm dò ý kiến
http://www.geekpedia.com/tutorial233_Getting-Disk-Drive-Information-using-WMI-and-Csharp.html
Không thể làm việc này trên máy tính của tôi. System.Management hiện không có lớp ManagementObjectSearcher. URL cũng không trỏ đến trang web hợp lệ. –
Bạn cần thêm tham chiếu cho điều đó. Trên Visual Studio, nhấp chuột phải vào dự án sau đó đi đến Add -> Reference. Sau đó, tìm kiếm "System.Management" và thêm nó. – Gippeumi
dụ họ có mạnh mẽ hơn, nhưng đây là mấu chốt của nó
string[] drives = System.IO.Directory.GetLogicalDrives();
foreach (string str in drives)
{
System.Console.WriteLine(str);
}
Bạn cũng P/Invoke và có thể gọi hàm win32 (hoặc sử dụng nó nếu bạn đang ở unmanaged code).
Điều đó chỉ nhận được danh sách các ổ đĩa tuy nhiên, để biết thông tin về từng loại, bạn sẽ muốn sử dụng GetDrives như Chris Ballance trình bày.
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);
}
có lẽ đây là những gì bạn muốn:
listBox1.Items.Clear();
foreach (DriveInfo f in DriveInfo.GetDrives())
listBox1.Items.Add(f);
Bạn cũng có thể muốn kiểm tra thuộc tính IsReady –
Đây là một mảnh tuyệt vời của mã.
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. Ổ đĩa danh sách Haskell trong Windows
- 2. Làm cách nào để lấy danh sách ổ đĩa di động trong C#?
- 3. Làm thế nào tôi có thể lấy danh sách tất cả các ổ đĩa mà còn nhận được loại ổ tương ứng (ổ đĩa di động, đĩa cục bộ hoặc đĩa CD-rom, dvd-rom ... vv)?
- 4. Lấy tên ổ đĩa (như trái ngược với ký tự ổ đĩa) trong Java
- 5. Liệt kê các ổ đĩa ngoài
- 6. Cách lấy thông tin ổ đĩa theo id âm lượng
- 7. Làm cách nào để hủy kích hoạt ổ đĩa vật lý LVM2 để tháo ổ đĩa?
- 8. Liệt kê tất cả các ổ đĩa vật lý (Windows)
- 9. Lỗi khi lắp ổ đĩa
- 10. PowerShell lấy danh sách các máy mạng
- 11. Phát hiện xem đĩa có nằm trong ổ đĩa DVD
- 12. IOKhông đủ dung lượng ổ đĩa khi truy cập ổ đĩa gắn Citrix
- 13. IOException cho ổ đĩa đầy đủ hoặc không gian
- 14. Phát hiện khi ổ đĩa được lắp trên OS X
- 15. Từ điển Python: Lấy danh sách các giá trị cho danh sách các phím
- 16. Sử dụng C# để nhận danh sách ACL cho Máy chủ và ổ đĩa được ánh xạ
- 17. C# lấy danh sách từ một trường trong danh sách
- 18. OpenCV: Phát hiện các đốm tròn/ổ đĩa Domino
- 19. Đọc các Ổ đĩa cứng trong C++ trên Linux
- 20. Liên kết trực tiếp ổ đĩa Google
- 21. cách lấy danh sách phụ từ danh sách trong ocaml
- 22. Lấy danh sách AD OU
- 23. Mount/Unmount Ổ đĩa USB với VBSCript
- 24. script để ánh xạ ổ đĩa mạng
- 25. Định dạng ổ đĩa bằng C++
- 26. Ổ đĩa EventBus: không bắt RuntimeException
- 27. Lấy kích thước cụm của một ổ đĩa cứng (thông qua mã)
- 28. Lấy ký tự ổ đĩa từ một chuỗi đường dẫn hoặc FileInfo
- 29. Số ổ đĩa tối đa trong cửa sổ?
- 30. Lấy danh sách các giá trị khác nhau trong Danh sách
Đây có phải là tính năng mới được thêm vào trong phiên bản .NET mới nhất không. Tôi đã viết một ứng dụng nhỏ để hiển thị những năm trước nhưng phải đi theo con đường WMI vào thời điểm đó. Rất tiện dụng để biết dù sao ... chúc mừng –
Hoàn hảo ... cảm ơn bạn – PaulB
Nhìn nhanh trên MSDN: đã được thêm vào .NET 2.0. – Richard