如何在 C# 中检索磁盘信息?
Posted
技术标签:
【中文标题】如何在 C# 中检索磁盘信息?【英文标题】:How do I retrieve disk information in C#? 【发布时间】:2010-09-29 14:00:31 【问题描述】:我想使用 C# 访问计算机上逻辑驱动器上的信息。我应该如何做到这一点?谢谢!
【问题讨论】:
【参考方案1】:对于大多数信息,您可以使用DriveInfo 类。
using System;
using System.IO;
class Info
public static void Main()
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
//There are more attributes you can use.
//Check the MSDN link for a complete example.
Console.WriteLine(drive.Name);
if (drive.IsReady) Console.WriteLine(drive.TotalSize);
【讨论】:
本地机器以外的机器上的驱动器信息呢? 对于网络安装的驱动器,此方法有效,将驱动器类型报告为“网络”。对于远程查询,我认为你应该问一个不同的问题。【参考方案2】:如果您想在本地计算机上获取单个/特定驱动器的信息。您可以使用DriveInfo 类进行如下操作:
//C Drive Path, this is useful when you are about to find a Drive root from a Location Path.
string path = "C:\\Windows";
//Find its root directory i.e "C:\\"
string rootDir = Directory.GetDirectoryRoot(path);
//Get all information of Drive i.e C
DriveInfo driveInfo = new DriveInfo(rootDir); //you can pass Drive path here e.g DriveInfo("C:\\")
long availableFreeSpace = driveInfo.AvailableFreeSpace;
string driveFormat = driveInfo.DriveFormat;
string name = driveInfo.Name;
long totalSize = driveInfo.TotalSize;
【讨论】:
【参考方案3】:没有驱动器号的已安装卷怎么办?
foreach( ManagementObject volume in
new ManagementObjectSearcher("Select * from Win32_Volume" ).Get())
if( volume["FreeSpace"] != null )
Console.WriteLine("0 = 1 out of 2",
volume["Name"],
ulong.Parse(volume["FreeSpace"].ToString()).ToString("#,##0"),
ulong.Parse(volume["Capacity"].ToString()).ToString("#,##0"));
【讨论】:
我自己发现的:''foreach(ManagementObject volume in new ManagementObjectSearcher("Select * from Win32_Volume").Get()) if(volume["FreeSpace"] != null ) Console .WriteLine("0 = 1 out of 2", volume["Name"], ulong.Parse(volume["FreeSpace"].ToString() ).ToString("#,##0" ), ulong.Parse(volume["Capacity"].ToString()).ToString("#,##0")); 【参考方案4】:使用 System.IO.DriveInfo 类 http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx
【讨论】:
【参考方案5】:检查DriveInfo 类,看看它是否包含您需要的所有信息。
【讨论】:
【参考方案6】:在 ASP .NET Core 3.1 中,如果您想获得在 windows 和 linux 上都可以运行的代码,您可以按如下方式获取驱动器:
var drives = DriveInfo
.GetDrives()
.Where(d => d.DriveType == DriveType.Fixed)
.Where(d => d.IsReady)
.ToArray();
如果你不同时应用这两个 where,如果你在 linux 中运行代码,你会得到很多驱动器(例如“/dev”、“/sys”、“/etc/hosts”等)。
这在开发应用程序以在 Linux Docker 容器中运行时特别有用。
【讨论】:
以上是关于如何在 C# 中检索磁盘信息?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET C# 中检索程序集信息窗口的文件版本 [重复]
如何从 C# 中的 Stripe Subscription 对象中检索产品信息?