Добавь это в мой код
1. Добавить проверку наличия файла “C:\Windows\Logs\password.txt” перед его открытием. Если файл не существует, создать новый файл.
4. Добавить функционал для изменения пароля. При нажатии на кнопку “Изменить пароль” открывать окно для изменения пароля, где пользователь вводит новый пароль и подтверждает его.
5. Добавить проверку на слишком простой пароль. Если пароль слишком простой (например, менее 6 символов или содержит только один тип символов), выводить сообщение об ошибке при сохранении пароля.
7. Предоставить возможность выбрать другой файл для хранения пароля. Добавить настройки программы, где пользователь может выбрать путь и имя файла для хранения пароля.

#include <windows.h>
#include <string>
#include <fstream>
#include <iostream>

const wchar_t CLASS_NAME[] = L"PasswordWindowClass";
std::string password;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void LockWindows();
void SavePassword(const std::string& password);

bool CheckPassword(const std::string& enteredPassword)
{
    std::ifstream file("C:\Windows\Logs\password.txt");
    if (file.is_open())
    {
        std::string savedPassword;
        if (std::getline(file, savedPassword))
        {
            file.close();
            return (enteredPassword == savedPassword);
        }
        else
        {
            file.close();
            return false;
        }
    }

    return false;
}

void SavePassword(const std::string& password)
{
    std::ofstream file("C:\Windows\Logs\password.txt");
    if (file.is_open())
    {
        file << password;
        file.close();
    }
    else
    {
        MessageBox(NULL, TEXT("Не удалось сохранить пароль!"), TEXT("Ошибка"), MB_OK | MB_ICONERROR);
    }
}

void LockWindows()
{
    LockWorkStation();
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASS wc = {};
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = CLASS_NAME;

    RegisterClass(&wc);

    HWND hwnd = CreateWindowEx(
        0,
        CLASS_NAME,
        L"Ввод пароля",
        WS_OVERLAPPEDWINDOW,

        CW_USEDEFAULT, CW_USEDEFAULT, 300, 150,

        NULL,
        NULL,
        hInstance,
        NULL
    );

    if (hwnd == NULL)
    {
        return 0;
    }

    ShowWindow(hwnd, nCmdShow);

    MSG msg = {};
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    if (CheckPassword(password))
    {
        // Правильный пароль, продолжаем запуск операционной системы
    }
    else
    {
        // Неправильный пароль, выключаем компьютер
        MessageBox(NULL, TEXT("Неправильный пароль!Компьютер будет выключен."), TEXT("Ошибка"), MB_OK | MB_ICONERROR);
        ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
    }

    return static_cast<int>(msg.wParam);
}

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_CREATE:
    {
        HWND hEdit = CreateWindowEx(
            0,
            TEXT("edit"),
            TEXT(""),
            WS_CHILD | WS_VISIBLE | WS_BORDER | ES_PASSWORD,
            10, 10, 200, 25, hwnd, reinterpret_cast<HMENU>(0), nullptr, nullptr
        );

        HWND hButton = CreateWindowEx(
            0,
            TEXT("button"),
            TEXT("Ввести"),
            WS_CHILD | WS_VISIBLE,
            10, 40, 100, 25, hwnd, reinterpret_cast<HMENU>(1), nullptr, nullptr
        );

        HWND hChangePasswordButton = CreateWindowEx(
            0,
            TEXT("button"),
            TEXT("Изменить пароль"),
            WS_CHILD | WS_VISIBLE,
            120, 40, 150, 25, hwnd, reinterpret_cast<HMENU>(2), nullptr, nullptr
        );

        // Отображение окна при запуске программы
        ShowWindow(hwnd, SW_SHOWNORMAL);
        break;
    }
    case WM_COMMAND:
    {
        if (LOWORD(wParam) == 1)
        {
            HWND hEdit = GetDlgItem(hwnd, 0);
            int length = GetWindowTextLengthA(hEdit);
            password.resize(length);
            GetWindowTextA(hEdit, &password[0], length + 1);

            MessageBox(hwnd, TEXT("Пароль сохранен."), TEXT("Пароль сохранен"), MB_OK | MB_ICONINFORMATION);

            SavePassword(password);

            LockWindows();

            DestroyWindow(hwnd);
        }
        else if (LOWORD(wParam) == 2)
        {
            // Открыть окно для изменения пароля
            HWND hChangePasswordWindow = CreateWindowEx(
                0,
                CLASS_NAME,
                L"Изменение пароля",
                WS_OVERLAPPEDWINDOW,

                CW_USEDEFAULT, CW_USEDEFAULT, 300, 150,

                NULL,
                NULL,
                GetModuleHandle(NULL),
                NULL
            );

            if (hChangePasswordWindow == NULL)
            {
                return 0;
            }

            ShowWindow(hChangePasswordWindow, SW_SHOWNORMAL);

            EnableWindow(hwnd, FALSE);
        }

        break;
    }
    case WM_CLOSE:
    {
        MessageBox(hwnd, TEXT("Введите пароль."), TEXT("Ошибка"), MB_OK | MB_ICONERROR);
        break;
    }
    case WM_DESTROY:
    {
        PostQuitMessage(0);
        break;
    }
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }

    return 0;
}