




Для получения большей информации вы можете использовать класс 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);
}
}
}
Для сетевых дисков это работает, тип диска отображается как «Сеть». Что касается удаленных запросов, я думаю, вам следует задать другой вопрос.
Проверьте класс DriveInfo и посмотрите, содержит ли он всю необходимую информацию.
Используйте класс System.IO.DriveInfo http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx
А как насчет подключенных томов, на которых нет буквы диска?
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 в новом ManagementObjectSearcher ("Select * from Win32_Volume") .Get ()) {if (volume ["FreeSpace"]! = Null) {Console.WriteLine ("{0} = {1} из {2} ", volume [" Name "], ulong.Parse (volume [" FreeSpace "]. ToString ()) .ToString (" #, ## 0 "), ulong.Parse (volume [ «Емкость»]. ToString ()) .ToString («#, ## 0»)); }}}
Если вы хотите получить информацию о одиночный / конкретный привод на вашем локальном компьютере. Вы можете сделать это следующим образом, используя класс 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;
В ASP .NET Core 3.1, если вы хотите получить код, который работает как в Windows, так и в Linux, вы можете получить свои диски следующим образом:
var drives = DriveInfo
.GetDrives()
.Where(d => d.DriveType == DriveType.Fixed)
.Where(d => d.IsReady
.ToArray();
Если вы не примените оба варианта, вы получите много дисков, если запустите код в Linux (например, «/ dev», «/ sys», «/ etc / hosts» и т. д.).
Это особенно полезно при разработке приложения для работы в контейнере Linux Docker.
Как насчет информации о диске на машине, отличной от локальной?