Программа типа «DiskInfo»

Список всех логических дисков в системе.
Получить тип каждого диска присутствующего в системе и дать пояснения каждому типу диска.
Получить информацию о дисках в системе и файловых системах Используемых на них.
Получить информацию о занятости и свободном месте на каждом из дисков.
Получить информацию о системной памяти.
Получить информацию о названии компьютера
Получить Название текущего пользователя
Получить информацию о текущем системном каталоге, Временном каталоге, текущем рабочем каталоге.

Помогите доделать

# include <Windows.h>
# include <conio.h>
# include <iostream>
# include <locale>
int main()
{
    setlocale(LC_ALL, "rus");
    int sz = GetLogicalDriveStrings(NULL, 0);
    TCHAR* szLogicalDrives = new TCHAR[sz];
    GetLogicalDriveStrings(sz, szLogicalDrives);

    while (*szLogicalDrives)
    {
        TCHAR szDisk[80];
        lstrcpy(szDisk, szLogicalDrives);
        GetDriveType(szDisk);
        UINT uDriveType = GetDriveType(szDisk);
        if (uDriveType == DRIVE_FIXED)
        {
            std::wcout << szDisk << std::endl;
            //определяем флаги
            std::wcout << L"Системные флаги диска:\t";
            DWORD dwSystemFlags;
            GetVolumeInformation(szDisk, NULL, 0, NULL, 0, &dwSystemFlags, NULL, 0);
            std::wcout << dwSystemFlags << L"\n";
            //определяем объем       
            __int64 uliTotalBytes;
            GetDiskFreeSpaceEx(szDisk, NULL, (PULARGE_INTEGER)&uliTotalBytes, NULL);
            std::wcout << L"Объем диска:\t" << uliTotalBytes / (1024 * 1024) << L" МБ\n";
            std::wcout << std::endl;
        }
        while (*szLogicalDrives) szLogicalDrives++;
        szLogicalDrives++;
    }
}

Ответы (1 шт):

Автор решения: Harry

А впрочем... что мне, жалко, что ли?

Для тех чечако, кто не умеет искать информацию самостоятельно:

#define  _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <iostream>
#include <format>

#pragma comment(lib,"Advapi32")

using namespace std;

const char* disk_type[] =
{
    "unknown", "no root dir", "removable", "fixed", "remote", "CD-ROM", "RAMDISK"
};

int main()
{

    {
        cout << "Drives:\n";
        DWORD d = GetLogicalDrives();
        for(char disk = 'A'; d; d >>= 1, disk++)
        {
            if (d&1)
            {
                char root[80] = {0};
                root[0] = disk;
                strcat(root,":\\");
                cout << "Drive " << disk << ": " << disk_type[GetDriveType(root)] << "\n";
                DWORD SectorsPerCluster,BytesPerSector,NumberOfFreeClusters,TotalNumberOfClusters;
                if (GetDiskFreeSpace(root,&SectorsPerCluster,&BytesPerSector,
                                     &NumberOfFreeClusters,&TotalNumberOfClusters))
                {
                    unsigned long long t = SectorsPerCluster, f;
                    t *= BytesPerSector; f = t;
                    t = t * TotalNumberOfClusters / 1024 / 1024;
                    f = f * NumberOfFreeClusters / 1024 / 1024;
                    cout << format("Free space: {0:10d} of {1:10d} MB\n", f, t);

                    char volName[256], fileSystem[256];
                    if (GetVolumeInformation(root,volName,256,0,0,0,fileSystem,256))
                    {
                        cout
                            << "File system: " << fileSystem << ", volume name: "
                            << volName << "\n";
                    }
                }
                cout << "\n";
            }
        }
        cout << "----------------8<----------------\n";
    }
    {
        unsigned long long M;
        char Name[256], user[256];
        DWORD sz = 256, uz = 256;
        if (GetUserName(user,&uz) &&
            GetComputerName(Name,&sz) &&
            GetPhysicallyInstalledSystemMemory(&M))
        {
            cout << "Computer \"" << Name << "\" (user name \"" << user
                 << "\") has " << M/1024 << " MB of physical memory\n";
            cout << "----------------8<----------------\n";
        }
    }
    {
        char path[300];
        if (GetSystemDirectory(path,300))
            cout << "System directory : " << path << "\n";
        if (GetWindowsDirectory(path,300))
            cout << "Windows directory: " << path << "\n";
        if (GetCurrentDirectory(300,path))
            cout << "Current directory: " << path << "\n";
    }
}
→ Ссылка