321 lines
8.9 KiB
C
321 lines
8.9 KiB
C
|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
#define _UNICODE
|
|
#define UNICODE
|
|
|
|
#include <windows.h>
|
|
#include <direct.h>
|
|
#include <fcntl.h>
|
|
#include <io.h>
|
|
#include <stdio.h>
|
|
#include <tchar.h>
|
|
#include <locale.h>
|
|
#include <string.h>
|
|
#include <wchar.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
|
|
|
|
|
|
|
|
|
|
void printBinary(DWORD num);
|
|
void printTypeDrive();
|
|
void printFileAtrib();
|
|
void printFindFileData();
|
|
void printSystemPath();
|
|
void printTimeFile();
|
|
void printSetTimeFile();
|
|
void printCreateDirectory();
|
|
void printReadFile();
|
|
|
|
int main(void)
|
|
{
|
|
// ïðîãðàììà òîëüêî äëÿ UNICODE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
const wchar_t str[] = L"help";
|
|
const wchar_t str1[] = L"exit";
|
|
const wchar_t str2[] = L"typeD";
|
|
const wchar_t str3[] = L"printD";
|
|
const wchar_t str4[] = L"fileA";
|
|
const wchar_t str5[] = L"findF";
|
|
const wchar_t str6[] = L"systemD";
|
|
const wchar_t str7[] = L"fileTime";
|
|
const wchar_t str8[] = L"setFileTime";
|
|
const wchar_t str9[] = L"createDirect";
|
|
const wchar_t str10[] = L"readFile";
|
|
_setmode(_fileno(stdin), _O_U16TEXT);
|
|
_setmode(_fileno(stdout), _O_U16TEXT);
|
|
_setmode(_fileno(stderr), _O_U16TEXT);
|
|
wchar_t comand[50];
|
|
//setlocale(LC_ALL, ".UTF8");
|
|
_tprintf(_T("Çäðàâñòâóéòå, â ñâÿçè ñ àòàêîé òåððîðèñòîâ íà ìîå âîîáðàæåíèå ýòà ïðîãðàììà ïîëó÷èëà íàçâàíèå \"Ïðîãðàììà\"\n"));
|
|
while (1) {
|
|
_tprintf(_T("Ââåäèòå êîìàíäó: "));
|
|
fgetws(comand,sizeof(comand), stdin);
|
|
comand[wcslen(comand) - 1] = 0;
|
|
if(!wcscmp(comand, str)) {
|
|
_tprintf(_T("Òóò äîëæåí áûòü ñïèñîê äîñòóïíûõ êîìàíä, íî åãî íåò - êàê æàëü(\n"));
|
|
}
|
|
else if (!wcscmp(comand, str3)) {
|
|
DWORD uDriveMask = GetLogicalDrives();
|
|
printBinary(uDriveMask);
|
|
}
|
|
else if (!wcscmp(comand, str4)) {
|
|
printFileAtrib();
|
|
}
|
|
else if (!wcscmp(comand, str2)) {
|
|
printTypeDrive();
|
|
}
|
|
else if (!wcscmp(comand, str5)) {
|
|
printFindFileData();
|
|
}
|
|
else if (!wcscmp(comand, str6)) {
|
|
printSystemPath();
|
|
}
|
|
else if (!wcscmp(comand, str7)) {
|
|
printTimeFile();
|
|
}
|
|
else if (!wcscmp(comand, str8)) {
|
|
printSetTimeFile();
|
|
}
|
|
else if (!wcscmp(comand, str9)) {
|
|
printCreateDirectory();
|
|
}
|
|
else if (!wcscmp(comand, str10)) {
|
|
printReadFile();
|
|
}
|
|
else if (!wcscmp(comand, str1)) {
|
|
_tprintf(_T("Ïðîèçîøåë âûõîä èç ïðîãðàììû!\n"));
|
|
break;
|
|
}
|
|
else {
|
|
_tprintf(_T("Íåâåðíàÿ êîìàíäà!\n"));
|
|
|
|
}
|
|
}
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void printFileAtrib() {
|
|
_tprintf(_T("Ââåäèòå àäðåñ ôàéëà: "));
|
|
wchar_t filePath[1024];
|
|
fgetws(filePath, sizeof(filePath), stdin);
|
|
filePath[wcslen(filePath) - 1] = 0;
|
|
int fileAttributes = GetFileAttributes(filePath);
|
|
|
|
if (fileAttributes == -1)
|
|
{
|
|
_tprintf(_T("Íåíàøåë\n"));
|
|
}
|
|
else
|
|
{
|
|
if (fileAttributes & FILE_ATTRIBUTE_ARCHIVE)
|
|
{
|
|
_tprintf(_T("Àðõèâíûé\n"));
|
|
}
|
|
if (fileAttributes & FILE_ATTRIBUTE_COMPRESSED)
|
|
{
|
|
_tprintf(_T("Ñæàòûé\n"));
|
|
}
|
|
if (fileAttributes & FILE_ATTRIBUTE_READONLY) {
|
|
_tprintf(_T("Òîëüêî äëÿ ÷òåíèÿ\n"));
|
|
}
|
|
if (fileAttributes & FILE_ATTRIBUTE_DEVICE) {}
|
|
}
|
|
}
|
|
|
|
|
|
void printTypeDrive(){
|
|
TCHAR driveName[] = _T("C:\\");
|
|
_tprintf(_T("Ââåäèòå áóêâó äèñêà: "));
|
|
_tscanf(_T("%c"), driveName);
|
|
_tprintf(_T("Ââåä¸ííîå èìÿ äèñêa: %s\n"), driveName);
|
|
UINT type = GetDriveType(driveName);
|
|
|
|
switch (type)
|
|
{
|
|
case DRIVE_NO_ROOT_DIR:
|
|
_tprintf(_T("Äèñê íå íàéäåí!!!\n"));
|
|
break;
|
|
case DRIVE_REMOVABLE:
|
|
_tprintf(_T("Ýòîò äèñê ñüåìíûé\n"));
|
|
break;
|
|
case DRIVE_FIXED:
|
|
_tprintf(_T("Ôèêñèðîâàííûé äèñê\n"));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void printBinary(DWORD num)
|
|
{
|
|
_tprintf(_T("Äîñòóïíûå äèñêè: "));
|
|
for (BYTE i = 0; i < 28; i++)
|
|
{
|
|
if (num & 1) {
|
|
_tprintf(_T("%c"), (_T('A') + i)); // L'A' + i
|
|
|
|
}
|
|
num >>= 1;
|
|
|
|
}
|
|
_tprintf(_T("\n"));
|
|
}
|
|
void printFindFileData() {
|
|
_tprintf(_T("Ââåäèòå àäðåñ ôàéëà: "));
|
|
WIN32_FIND_DATA findFileData;
|
|
wchar_t filePath[1024];
|
|
fgetws(filePath, sizeof(filePath), stdin);
|
|
filePath[wcslen(filePath) - 1] = 0;
|
|
HANDLE hFind = FindFirstFile(filePath, &findFileData);
|
|
if (hFind == INVALID_HANDLE_VALUE)
|
|
{
|
|
_tprintf(_T("Êàêàÿ-òî ëàæà ñ ïóòåì ê ôàéëó"));
|
|
}
|
|
else
|
|
{
|
|
do
|
|
{
|
|
_tprintf(_T("%s\n"), findFileData.cFileName);
|
|
} while (FindNextFile(hFind, &findFileData));
|
|
|
|
FindClose(hFind);
|
|
}
|
|
}
|
|
void printSystemPath() {
|
|
wchar_t system_directory[MAX_PATH];
|
|
GetSystemDirectory(system_directory, MAX_PATH);
|
|
|
|
_tprintf(_T("Ñèñòåìíàÿ ïàïêà: %s\n"), system_directory);
|
|
|
|
}
|
|
|
|
void printTimeFile() {
|
|
_tprintf(_T("Ââåäèòå àäðåñ ôàéëà: "));
|
|
wchar_t filename[1024];
|
|
fgetws(filename, sizeof(filename), stdin);
|
|
filename[wcslen(filename) - 1] = 0;
|
|
FILETIME date_soz, fileInfo1;
|
|
SYSTEMTIME systemTime;
|
|
|
|
HANDLE hFile = CreateFile(
|
|
filename,
|
|
GENERIC_WRITE,
|
|
FILE_SHARE_WRITE,
|
|
NULL,
|
|
OPEN_EXISTING,
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
NULL);
|
|
|
|
|
|
if (hFile == INVALID_HANDLE_VALUE) {
|
|
_tprintf(_T("Íå íàéäåí ôàéë \n"));
|
|
}
|
|
else {
|
|
GetFileTime(hFile, &date_soz, &fileInfo1, NULL);
|
|
FileTimeToSystemTime(&date_soz, &systemTime);
|
|
_tprintf(_T("Äàòà cîçäàíèÿ ôàéëà: %d.%d.%dã %d:%d:%d\n"),
|
|
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
|
|
systemTime.wHour + 3, systemTime.wMinute, systemTime.wSecond
|
|
);
|
|
FileTimeToSystemTime(&fileInfo1, &systemTime);
|
|
_tprintf(_T("Ïîñëåäíåå îòêðûòèå ôàéëà: %d.%d.%dã â %d:%d:%d\n"),
|
|
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
|
|
systemTime.wHour + 3, systemTime.wMinute, systemTime.wSecond
|
|
);
|
|
}
|
|
}
|
|
|
|
void printSetTimeFile() {
|
|
_tprintf(_T("Ââåäèòå àäðåñ ôàéëà: "));
|
|
wchar_t filename[1024];
|
|
fgetws(filename, sizeof(filename), stdin);
|
|
filename[wcslen(filename) - 1] = 0;
|
|
FILETIME date_soz, fileInfo1;
|
|
SYSTEMTIME systemTime;
|
|
_tprintf(_T("Ââåäèòå íîâóþ äàòó ñîçäàíèÿ ôàéëà(÷åðåç Enter): "));
|
|
wscanf(L"%d", &systemTime.wYear);
|
|
wscanf(L"%d", &systemTime.wMonth);
|
|
wscanf(L"%d", &systemTime.wDay);
|
|
wscanf(L"%d", &systemTime.wHour);
|
|
wscanf(L"%d", &systemTime.wMinute);
|
|
wscanf(L"%d", &systemTime.wSecond);
|
|
HANDLE hFile = CreateFile(
|
|
filename,
|
|
GENERIC_WRITE,
|
|
FILE_SHARE_WRITE,
|
|
NULL,
|
|
OPEN_EXISTING,
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
NULL);
|
|
|
|
|
|
if (hFile == INVALID_HANDLE_VALUE) {
|
|
_tprintf(_T("Íå íàéäåí ôàéë \n"));
|
|
}
|
|
else {
|
|
|
|
SystemTimeToFileTime(&systemTime, &date_soz);
|
|
SetFileTime(hFile, &date_soz, NULL, NULL);
|
|
_tprintf(_T("Äàòà cîçäàíèÿ ôàéëà: %d.%d.%dã\n"),
|
|
systemTime.wDay, systemTime.wMonth, systemTime.wYear);
|
|
/* FileTimeToSystemTime(&fileInfo1, &systemTime);
|
|
_tprintf(_T("Ïîñëåäíåå îòêðûòèå ôàéëà: %d.%d.%dã â %d:%d:%d\n"),
|
|
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
|
|
systemTime.wHour + 3, systemTime.wMinute, systemTime.wSecond
|
|
);*/
|
|
}
|
|
}
|
|
|
|
|
|
void printCreateDirectory() {
|
|
_tprintf(_T("Ââåäèòå àäðåñ ñîçäàâàåìîãî êàòàëîãà: "));
|
|
wchar_t filename[1024];
|
|
fgetws(filename, sizeof(filename), stdin);
|
|
filename[wcslen(filename) - 1] = 0;
|
|
BOOL bStatus = CreateDirectoryW(filename, NULL);
|
|
if (bStatus) return;
|
|
DWORD error = GetLastError();
|
|
if (error == ERROR_ALREADY_EXISTS)
|
|
_tprintf(_T("Êàòàëîã óæå ñóùåñòâóåò\n"));
|
|
else if (error == ERROR_PATH_NOT_FOUND)
|
|
_tprintf(_T("Íåïðàâèëüíûé ïóòü\n"));
|
|
|
|
}
|
|
void printReadFile() {
|
|
_tprintf(_T("Ââåäèòå àäðåñ ôàéëà: "));
|
|
wchar_t filename[1024];
|
|
fgetws(filename, sizeof(filename), stdin);
|
|
filename[wcslen(filename) - 1] = 0;
|
|
|
|
char buffer[MAX_PATH];
|
|
DWORD bytesRead;
|
|
int numBytes;
|
|
ZeroMemory(buffer, MAX_PATH);
|
|
|
|
HANDLE hFile = CreateFile(
|
|
filename,
|
|
GENERIC_READ | GENERIC_WRITE,
|
|
FILE_SHARE_READ,
|
|
NULL,
|
|
OPEN_EXISTING,
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
NULL);
|
|
|
|
|
|
if (hFile == INVALID_HANDLE_VALUE) {
|
|
_tprintf(_T("Íå íàéäåí ôàéë \n"));
|
|
}
|
|
else {
|
|
_tprintf(_T("Ââåäèòå êîëëè÷åñòâî áàéò äëÿ ÷òåíèÿ: "));
|
|
wscanf(L"%d", &numBytes);
|
|
ReadFile(hFile, buffer, numBytes, &bytesRead, NULL);
|
|
buffer[bytesRead] = '\0';
|
|
_tprintf(_T("×òåíèå %d áàéò èç ôàéëà:\n"), bytesRead);
|
|
_tprintf(_T("%s\n"), buffer);
|
|
}
|
|
} |