Получите бесплатное дисковое пространство

Проблема в том, что вы устанавливаете перекрытие ваших плиток.

83
задан svick 8 March 2013 в 14:33
поделиться

3 ответа

Вот пересмотренная и упрощенная версия ответа @sasha_gud:

    [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
        out ulong lpFreeBytesAvailable,
        out ulong lpTotalNumberOfBytes,
        out ulong lpTotalNumberOfFreeBytes);

    public static ulong GetDiskFreeSpace(string path)
    {
        if (string.IsNullOrEmpty(path))
        {
            throw new ArgumentNullException("path");
        }

        ulong dummy = 0;

        if (!GetDiskFreeSpaceEx(path, out ulong freeSpace, out dummy, out dummy))
        {
            throw new Win32Exception(Marshal.GetLastWin32Error());
        }

        return freeSpace;
    }
0
ответ дан 24 November 2019 в 08:52
поделиться

DriveInfo поможет вам с некоторыми из них (но он не работает с путями UNC), но я думаю, что вам нужно будет использовать GetDiskFreeSpaceEx . Вероятно, вы сможете добиться некоторой функциональности с помощью WMI. GetDiskFreeSpaceEx выглядит лучшим выбором.

Скорее всего, вам придется очистить свои пути, чтобы заставить его работать правильно.

39
ответ дан 24 November 2019 в 08:52
поделиться

непроверено:

using System;
using System.Management;

ManagementObject disk = new
ManagementObject("win32_logicaldisk.deviceid="c:"");
disk.Get();
Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes");
Console.WriteLine("Logical Disk FreeSpace = " + disk["FreeSpace"] + "
bytes"); 

Кстати, каков результат свободного дискового пространства на c: \ temp? вы освободите место от c: \

3
ответ дан 24 November 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: