Дополни код
2. Создание службы Windows:
- Создай службу Windows, которая будет запускать твое приложение при загрузке компьютера.
- Зарегистрируй эту службу с помощью команды sc create или используй инструмент, такой как NSSM (Non-Sucking Service Manager).

3. Использование планировщика задач:
- Создай задачу планировщика в Windows, которая будет запускать твое приложение при загрузке компьютера.
- Настрой эту задачу, чтобы она выполнялась сразу после входа в систему.





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

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, nullptr, nullptr, nullptr);
		HWND hButton = CreateWindowEx(0, TEXT("button"), TEXT("Войти"), WS_CHILD | WS_VISIBLE, 10, 40, 100, 25, hwnd, reinterpret_cast<HMENU>(1), nullptr, nullptr);
		break;
	}
	case WM_COMMAND:
	{
		if (LOWORD(wParam) == 1)
		{
			HWND hEdit = GetDlgItem(hwnd, 0);
			int length = GetWindowTextLength(hEdit);
			std::string password(length + 1, '\0');
			GetWindowTextA(hEdit, &password[0], length + 1);

			std::string correctPassword = "123";

			if (password == correctPassword)
			{
				MessageBox(hwnd, TEXT("Пароль верный!"), TEXT("Вход разрешен"), MB_OK);
				ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0); // Здесь можно продолжить загрузку Windows
			}
			else
			{
				MessageBox(hwnd, TEXT("Пароль неверный!"), TEXT("Вход запрещен"), MB_OK | MB_ICONERROR);
			}

			SetWindowTextA(hEdit, "");
		}
		break;
	}
	case WM_CLOSE:
	{
		DestroyWindow(hwnd);
		break;
	}
	case WM_DESTROY:
	{
		PostQuitMessage(0);
		break;
	}
	default:
		return DefWindowProc(hwnd, uMsg, wParam, lParam);
	}
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	WNDCLASS wc = {};
	wc.lpfnWndProc = WindowProc;
	wc.hInstance = hInstance;
	wc.lpszClassName = TEXT("PasswordWindowClass");
	RegisterClass(&wc);

	HWND hwnd = CreateWindowEx(0, wc.lpszClassName, TEXT("Ввод пароля"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 150, nullptr, nullptr, hInstance, nullptr);
	if (hwnd == nullptr)
	{
		return 0;
	}

	ShowWindow(hwnd, nCmdShow);

	// Получение расположения папки автозагрузки текущего пользователя
	TCHAR startupFolderPath[MAX_PATH];
	SHGetSpecialFolderPath(NULL, startupFolderPath, CSIDL_STARTUP, FALSE);

	// Создание пути к ярлыку приложения в папке автозагрузки
	std::wstring shortcutPath(startupFolderPath);
	shortcutPath += L"\MyApp.lnk";

	// Создание ярлыка
	CoInitialize(NULL);
	IShellLink* pShellLink;
	CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, reinterpret_cast<LPVOID*>(&pShellLink));

	pShellLink->SetPath(L"path\to\your\application.exe");

	IPersistFile* pPersistFile;
	pShellLink->QueryInterface(IID_IPersistFile, reinterpret_cast<LPVOID*>(&pPersistFile));

	pPersistFile->Save(shortcutPath.c_str(), TRUE);
	pPersistFile->Release();

	CoUninitialize();

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

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