#include #include #include int getLogicalDriveStrings() { printf("- GetLogicalDriveStrings:\n"); char buffer[4096]; // сам буфер для строки DWORD bufSize = sizeof(buffer) - 1; // размер буфера, в который нужно записывать строку с дисками GetLogicalDriveStrings(bufSize, buffer); // Получение списка логических дисков char *drive = buffer; while (*drive) { // перебор дисков printf("Диск: %s\n", drive); // следующий диск drive += strlen(drive) + 1; } return 0; } int getVolumeInformation() { printf("- GetVolumeInformation:\n"); char volumeName[256]; char fileSystemName[256]; DWORD serialNumber; DWORD maxComponentLength; DWORD fileSystemFlags; // Получение информации о текущем диске GetVolumeInformation("C:\\", // указатель на строку, содержащую корневой каталог тома volumeName, // буфер, который получит имя тома sizeof(volumeName), // длина буфера для имени тома &serialNumber, // указатель на переменную, которая получит имя указанного тома &maxComponentLength, // &fileSystemFlags, // fileSystemName, // буфер для названия файловой системы sizeof(fileSystemName)); // размер буфера названия файловой системы printf("Имя тома: %s\n", volumeName); printf("Серийный номер: %lu\n", serialNumber); printf("Max Component Length: %lu\n", maxComponentLength); printf("Тип файловой системы: %s\n", fileSystemName); printf("File System Flags: %lu\n", fileSystemFlags); return 0; } // --- long getFileSize() { printf("- GetFileSize:\n"); HANDLE hFile; DWORD fileSize; unsigned long structLargeInt; // Открытие файла hFile = CreateFile((LPCSTR) "../text.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // Получение размера файла structLargeInt = GetFileSize(hFile, NULL); // Закрытие файла CloseHandle(hFile); // Вывод размера файла printf("Размер файла: %lu байт\n", structLargeInt); return 0; } int findNextFile() { printf("- FindNextFile:\n"); WIN32_FIND_DATA findData; HANDLE hFind; char path[MAX_PATH]; // Задаем путь к директории, которую нужно просканировать strcpy(path, "..\\*"); // Начинаем поиск первого файла/папки в директории hFind = FindFirstFile(path, &findData); // Перебираем все файлы и папки в директории do { if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { printf("Папка: %s\n", findData.cFileName); } else { printf("\tФайл: %s\n", findData.cFileName); } } while (FindNextFile(hFind, &findData)); // Закрытие дескриптора поиска FindClose(hFind); return 0; } int getWindowsDirectory() { printf("- GetWindowsDirectory:\n"); char windowsDir[255]; // сюда запишутся символы пути GetWindowsDirectory(windowsDir, sizeof(windowsDir)); printf("Виндосв папка тут: %s\n", windowsDir); return 0; } int compareFileTime() { printf("- CompareFileTime:\n"); FILETIME fileTime1; FILETIME fileTime2; // первый файл HANDLE file1 = CreateFile((LPCSTR) "../text.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // время изменения первого файла GetFileTime(file1, NULL, NULL, &fileTime1); // закрываем первый файл CloseHandle(file1); // Открываем второй файл HANDLE file2 = CreateFile((LPCSTR) "../text2.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // Получаем время изменения второго файла GetFileTime(file2, NULL, NULL, &fileTime2); // Закрываем второй файл CloseHandle(file2); // Сравниваем время изменения файлов int comparisonResult = CompareFileTime(&fileTime1, &fileTime2); if (comparisonResult == 1) { printf("Файл 1 был изменен раньше файла 2\n"); } else if (comparisonResult == -1) { printf("Файл 2 был изменен раньше файла 1\n"); } else { printf("Время изменения файлов одинаково\n"); } return 0; } // --- int setLocalTime() { printf("- SetLocalTime:\n"); // Создание структуры SYSTEMTIME для установки времени SYSTEMTIME systemTime; // Заполнение структуры SYSTEMTIME данными текущего времени GetLocalTime(&systemTime); printf("\nДата и время ДО изменения: %02d-%02d-%d %02d:%02d:%02d\n", systemTime.wDay, systemTime.wMonth, systemTime.wYear, systemTime.wHour, systemTime.wMinute, systemTime.wSecond); // Увеличение часового значения на 1 if (systemTime.wHour < 23) { systemTime.wHour++; } else { systemTime.wHour = 0; } // Установка нового времени с использованием SetLocalTime SetLocalTime(&systemTime); printf("Время успешно изменено\n"); printf("\nДата и время ПОСЛЕ изменения: %02d-%02d-%d %02d:%02d:%02d\n", systemTime.wDay, systemTime.wMonth, systemTime.wYear, systemTime.wHour, systemTime.wMinute, systemTime.wSecond); return 0; } int setFileAttributes() { printf("- SetFileAttributes:\n"); // Gуть к файлу LPCWSTR filePath = L"..\\text3.txt"; // Сбрасываем атрибуты файла SetFileAttributes((LPCSTR) filePath, (DWORD) NULL); // Текущие атрибуты файла DWORD fileAttributes = GetFileAttributes((LPCSTR) filePath); printf("\tТекущие атрибуты файла ДО замены: "); if (fileAttributes & FILE_ATTRIBUTE_READONLY) { printf("\n- Read-only"); } if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) { printf("\n- Hidden"); } if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) { printf("\n- Directory"); }// и так далее для других атрибутов файла... printf("\n"); // Устанавливаем атрибуты файла DWORD newFileAttributes = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY |fileAttributes; BOOL result = SetFileAttributes((LPCSTR) filePath, (DWORD) newFileAttributes); fileAttributes = GetFileAttributes((LPCSTR) filePath); printf("\tТекущие атрибуты файла ПОСЛЕ замены: "); if (fileAttributes & FILE_ATTRIBUTE_READONLY) { printf("\n- Read-only"); } if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) { printf("\n- Hidden"); } if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) { printf("\n- Directory"); }// и так далее для других атрибутов файла... printf("\n"); return 0; } int createFile() { printf("- CreateFile:\n"); HANDLE hFile; char* fileName = "example.txt"; // Создание файла hFile = CreateFile(fileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // Запись в файл char* data = "Hello, World!"; DWORD bytesWritten; WriteFile(hFile, data, strlen(data), &bytesWritten, NULL); // Закрытие файла CloseHandle(hFile); // Повторное открытие файла hFile = CreateFile(fileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // Чтение из файла const int bufferSize = 100; char buffer[bufferSize]; DWORD bytesRead; if (!ReadFile(hFile, buffer, bufferSize, &bytesRead, NULL)) { printf("Failed to read from file.\n"); CloseHandle(hFile); return 1; } // Вывод содержимого файла printf("Содержимое файла: %.*s\n", bytesRead, buffer); // Закрытие файла CloseHandle(hFile); return 0; } void copyFile(const char* sourceFile, const char* destinationFile) { printf("- CopyFile:\n"); FILE* source = fopen(sourceFile, "rb"); FILE* destination = fopen(destinationFile, "wb"); // Копируем содержимое файла char buffer[1024]; size_t bytesRead; while ((bytesRead = fread(buffer, 1, sizeof(buffer), source)) > 0) { fwrite(buffer, 1, bytesRead, destination); } // Закрываем файлы fclose(source); fclose(destination); printf("Файл успешно скопирован.\n"); } int main() { setlocale(LC_ALL, "Rus"); printf("\n----------------------------\n"); printf("\tИнформация о дисках:\n"); // getLogicalDriveStrings();// + получение букв дисков // getVolumeInformation();// + получение информации о файловой системе выбранного логического диска printf("\n------------------------------------------\n"); printf("\tИнформация о файлах и директориях:\n"); // getFileSize();// + получает размер файла // findNextFile();// + поиск следующего файла в месте поиска // getWindowsDirectory();// + путь к основному каталогу виндовс // compareFileTime();// + определение какой из файлов более новый printf("\n----------------------------\n"); printf("\tУправляющие функции:\n"); // setLocalTime();// + установить текущую дату и время // setFileAttributes();// + установка файловых атрибутов // createFile();// создать/открыть файл const char* sourceFile = ".//text.txt"; const char* destinationFile = ".//text33.txt"; CopyFile(".//text.txt", ".//text3.txt", 0);// скопировать файл }