Как сделать программу для входа в Windows

При запуске Windows 10 или 8, вам будет предложено ввести пароль, чтобы иметь возможность войти в систему. Это позволяет защитить ваш компьютер, от несанкционированного доступа. Но если вы единственный человек, который использует компьютер, и вы не хотите, получать запрос на ввод пароля каждый раз, вы можете избавиться от этого процесса и войти в систему Windows автоматически без ввода пароля.

Начиная с Windows 10 версии 2004, которая выйдет весной 2020 г, также известной под кодовым именем «20H1», Microsoft изменила поведение по умолчанию для функции автоматического входа в систему. Теперь, если у вас включен какой-либо из параметров безопасности Windows Hello, вы не сможете автоматически войти в свою учетную запись.

Начиная с Windows 10 build 19033, если вы установили PIN-код или другую безопасную функцию Windows Hello, Windows 10 скрывает параметр «Требовать ввод имени пользователя и пароля», чтобы использовать этот компьютер в классическом стиле control userpasswords2. Смотрите следующий скриншот:

Вход без пароля в Виндовс

Автоматический вход в учетную запись пользователя в Windows 10 версии 2004

В этой статье, мы рассмотрим три способа, с помощью которых вы можете отключить экран входа в систему и автоматически входить Windows 10 версии 2004 (20H1) и предыдущих версий без ввода пароля.

Способ 1.

Автоматический вход в Windows, с помощью команд — control userpasswords2 и netplwiz.

Чтобы отключить экран входа в систему, и автоматически входить Windows 10 версии 2004, выполните следующие действия:

Шаг 1: Откройте приложение «Параметры» самый быстрый способ нажать одновременно клавиши Win + I .

Шаг 2: Перейдите в раздел «Учетные записи» → «Варианты входа».

Шаг 3: Выключите опцию — «Требовать выполнение входа с помощью Windows Hello для учетных записей Microsoft».

Требовать выполнение входа с помощью Windows Hello для учетных записей Microsoft

Шаг 4: Нажмите сочетание клавиш Win + R открыв диалоговое окно «Выполнить», введите одну из двух команд, представленных ниже:

control userpasswords2
netplwiz

Перейдите в папку C:WindowsSysWOW64 и запустите там Netplwiz.exe.

control userpasswords2

Шаг 5: Нажмите Enter , чтобы открыть окно «Учетные записи пользователей» и снимите флажок — «Требовать ввод имени пользователя и пароля», нажмите кнопку «Применить» → «OK».

Требовать ввод имени пользователя и пароля

Это действие — открывает окно, в котором вы должны ввести свой пароль для учетной записи. Если учетная запись является локальной записью и не имеет пароля, просто оставьте это поле пустым.

Вход в Windows с веб камерой вместо пароля

Автоматический вход в Windows 10 без ввода пароля.

Шаг 6: Перезагрузите компьютер.

После того, как вы сделаете это, вы обнаружите, что вы можете войти в систему Windows 10, 8 автоматически и вам ненужно вводить пароль или данные вашей учетной записи Microsoft.

Шаг 7: Осталось отключить запрос пароля после сна, ознакомится с инструкцией вы можете в нашей статье: Как отключить запрос пароля во время выхода из режима сна.

Способ 2.

Автоматический вход в Windows с помощью утилиты Microsoft «AutoLogon».

Microsoft Autologon это небольшая, бесплатная утилита предлагаемая Microsoft, которая может быть использована для настройки встроенного механизма автоматического входа в систему Windows 10. Подобно утилите netplwiz, вы можете сохранить учетные данные для любого локальной или MSA — учетной записи Microsoft. Наиболее важным преимуществом Autologon это шифрование пароля перед сохранением его в реестр.

Шаг 1: Перейдите на страницу docs.microsoft.com и загрузите архив с утилитами Sysinternals. Архив содержит отдельные инструменты для устранения неполадок, а также утилиту «AutoLogon».

Шаг 2: Распакуйте архив и запустите файл Autologon.exe или Autologon64.exe в зависимости от разрядности вашей системы, чтобы установить его.

Шаг 3: После установки, запустите приложение и заполните необходимую информацию логин, пароль и нажмите кнопку «Enable», чтобы включить механизм обхода ввода пароля для выбранной учетной записи пользователя. На экране, появится сообщение подтверждающее, что Autologon успешно сконфигурирован.

Вы также можете использовать утилиту AutoLogon с помощью командной строки, используя приведенный ниже синтаксис:

Читайте также:
Не является внутренней или внешней командой исполняемой программой или пакетным файлом Windows 11

autologon user domain password

Шаг 4: Перезагрузите ПК.

Способ 3.

Автоматический вход в Windows с помощью редактора реестра.

Как автоматически выполнить вход в учетную запись пользователя в Windows 10 версии 2004 «20H1» с помощью редактора реестра.

Шаг 1: Создайте точку восстановления системы, а затем нажмите Win + R на клавиатуре, чтобы запустить диалоговое окно «Выполнить». Введите regedit.exe и нажмите клавишу Enter , чтобы открыть редактор реестра.

Шаг 2: Перейдите к следующему пути на левой боковой панели редактора реестра.

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon

Шаг 3: Теперь, с права найдите параметр «AutoAdminLogon» и измените его значение на 1.

параметр «AutoAdminLogon»

После этого, вам нужно создать несколько дополнительных строковых параметров для хранения значений данных учетной записи. Просто кликните правой кнопкой мыши на разделе Winlogon и выберите «Создать» → «Строковой параметр» и заполните их соответствующими значениями, в зависимости от присвоенного имени.

Имя Строкового параметра Значение
DefaultDomainName Имя компьютера (для локальной учетной записи) или имя домена
DefaultUserName Имя пользователя (как в C:Users)
DefaultPassword Пароль для выбранной учетной записи

вам нужно создать несколько дополнительных строковых параметров

Если Строковой параметр уже существует, вам просто нужно изменить значение соответствующим образом.

Шаг 4: После того, как заполнены все значения сохраните настройки и закройте редактор реестра.

Должен отметить, что одним из недостатков использования редактора реестра для автоматического входа в систему, ваш пароль хранится в незашифрованном виде. Любой пользователь, имеющий доступ к реестру может посмотреть его. Поэтому рекомендуем вам использовать Способ с netplwiz или Autologon, ваш пароль будет надежно зашифрован и не будет хранится в редакторе реестра.

Чтобы отключить автоматический вход в систему с помощью этого метода, удалите значение DefaultPassword и установите для AutoAdminLogon значение 0.

Надеюсь, что этот совет будет полезен для вас.

Рекомендуем:

Источник: g-ek.com

Пишем свой Credential Provider на C# для авторизации в Windows

Credential Provider, используется для передачи пользовательских учетных данных в стек безопасности Windows. По умолчанию в системе присутствуют поставщики для входа через пароль, PIN-код, смарт-карту и Windows Hello. Однако что делать если они нам не подходят?

Credential Providerы основаны на технологии COM и запускаются в процессе пользовательского интерфейса winlogon. Создание такого провайдера на C# уже описывалось в статье Стива Сайфуса, однако в его реализации не корректно отрабатывалась разблокировка рабочей станции, да и было желание переписать код на фреймворк Net Core, с которым чаще всего мне приходится работать.

Для того что бы начать разработку, необходимо настроить COM-взаимодействие позволяет вызывать код на .NET из компонентов COM. Для взаимодействия необходимо правильно настроить интерфейсы, для этого можно использовать определения MSDN, или воспользоваться облегченным вариантом используя файл IDL, определяющий нужные интерфейсы, из Windows SDK. Все что необходимо, преобразовать его в библиотеку типов, а затем конвертировать в сборку .NET.

Для компиляции библиотеки типов используется утилита midl.exe, но перед тем как воспользоваться ей необходимо подправить файл credentialprovider.idl. Как выяснилось если использовать данный файл без изменения часть методов в интрефейсы не доступны, что бы это исправить необходимо перенести объявление CLSID в начало файла.

// C:Program Files (x86)Windows Kits10Include10.0.19041.0umcredentialprovider.idl [ uuid(d545db01-e522-4a63-af83-d8ddf954004f), // LIBID_CredentialProviders ] library CredentialProviders < // код credentialprovider.idl >

После чего можно выполнить команду:

midl .credentialprovider.idl -target NT100 /x64

После выполнения мы получим несколько файлов, но нас будет интересовать только библиотека типов, которую необходимо преобразовать в сборку .NET. Обычно для преобразования используется утилита tlbimp.exe, но по умолчанию данная утилита ожидает что вы будете генерировать исключения вместо возврата HRESULT. Для преодоления этой проблемы была создана утилита tlbimp2.exe, к сожалению я не смог найти её оригинал, поэтому воспользовался файлом из репозитория Стива. После выполнения команды на выходе мы получаем библиотеку OTP.Provider.Interop.dll, которую надо привязать к проекту, добавив ссылку на полученный файл.

./TlbImp2.exe .credentialprovider.tlb /out:OTP.Provider.Interop.dll /unsafe /preservesig namespace:OTP.Provider

После чего нем станут доступны следующие интерфейсы, методы которых необходимо описать:

  • ICredentialProvider — Предоставляет методы, используемые при настройке и управлении поставщиком учетных данных.
  • ICredentialProviderCredential — Предоставляет методы, позволяющие обрабатывать учетные данные.
  • ICredentialProviderCredential2 — Расширяет интерфейс ICredentialProviderCredential, добавляя метод, извлекающий идентификатор безопасности (SID) пользователя. Учетные данные связаны с этим пользователем и могут быть сгруппированы на плитке пользователя.
  • ICredentialProviderSetUserArray — Предоставляет метод, который позволяет поставщику учетных данных получать набор пользователей, которые будут отображаться в пользовательском интерфейсе входа или учетных данных.
Читайте также:
Почему некоторые программы не запускаются на Windows 10

Класс который реализует интерфейс ICredentialProvider необходимо сделать видимым для подсистемы COM, а также сгенерировать для него уникальный идентификатор класса. Таким образом система сможет обратится к библиотеке при выборе метода авторизации указывающего на тот же идентификатор.

[ComVisible(true)] [Guid(«D26F523C-A346-4FC8-B9B4-2B57EAEDA723»)] [ClassInterface(ClassInterfaceType.None)] [ProgId(«OTP.Provider»)] public class CredentialProvider : ICredentialProvider < // код CredentialProvider >

При сборке проекта так же необходимо включить параметр EnableComHosting, для создания класса COM, а также правильного манифеста. При включенном параметре, кроме основной библиотеке, создается библиотека с приставкой comhost, которую мы регистрируем в системе для работы. Второй параметр который необходим для правильной сборки это CopyLocalLockFileAssemblies, таким образом все зависимости будут находиться в выходном каталоге и библиотека сможет спокойно к ним обратится. Например пакет System.Drawing.Common используется для отображения картинки плитки и я сначала не мог понять почему у меня отображается пустой квадрат, вместо изображения.

net6.0-windows enable annotations true x64 true True // .

Методов которые нас интересуют для изменения конфигурации не так много, один из них метод Initialize, он отвечает за передачу списка полей, которые выводятся на экране. Если мы хотим добавить поле необходимо воспользоваться методом AddField, все что необходимо это указать пару параметров, по умолчанию Windows даёт нам 6 видов типов полей, которые включают в себя текстовое поле, пароль, метку и т.п. По умолчанию необходимо перечислить поля для отображения ввода логина, пароля, подтверждения пароля, метки и изображения иконки для провайдера, но этот список может быть изменен.

protected override CredentialView Initialize(_CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, uint dwFlags) < var flags = (CredentialFlag)dwFlags; Logger.Write($»cpus: ; dwFlags: «); var isSupported = IsSupportedScenario(cpus); if (!isSupported) < if (NotActive == null) NotActive = new CredentialView(this) < Active = false >; return NotActive; > var view = new CredentialView(this) < Active = true >; var userNameState = (cpus == _CREDENTIAL_PROVIDER_USAGE_SCENARIO.CPUS_CREDUI) ? _CREDENTIAL_PROVIDER_FIELD_STATE.CPFS_DISPLAY_IN_SELECTED_TILE : _CREDENTIAL_PROVIDER_FIELD_STATE.CPFS_HIDDEN; var confirmPasswordState = (cpus == _CREDENTIAL_PROVIDER_USAGE_SCENARIO.CPUS_CHANGE_PASSWORD) ? _CREDENTIAL_PROVIDER_FIELD_STATE.CPFS_DISPLAY_IN_BOTH : _CREDENTIAL_PROVIDER_FIELD_STATE.CPFS_HIDDEN; view.AddField( cpft: _CREDENTIAL_PROVIDER_FIELD_TYPE.CPFT_TILE_IMAGE, pszLabel: «Icon», state: _CREDENTIAL_PROVIDER_FIELD_STATE.CPFS_DISPLAY_IN_BOTH, guidFieldType: Guid.Parse(CredentialView.CPFG_CREDENTIAL_PROVIDER_LOGO) ); view.AddField( cpft: _CREDENTIAL_PROVIDER_FIELD_TYPE.CPFT_EDIT_TEXT, pszLabel: «Username», state: userNameState ); view.AddField( cpft: _CREDENTIAL_PROVIDER_FIELD_TYPE.CPFT_PASSWORD_TEXT, pszLabel: «Password», state: _CREDENTIAL_PROVIDER_FIELD_STATE.CPFS_DISPLAY_IN_SELECTED_TILE, guidFieldType: Guid.Parse(CredentialView.CPFG_LOGON_PASSWORD_GUID) ); view.AddField( cpft: _CREDENTIAL_PROVIDER_FIELD_TYPE.CPFT_PASSWORD_TEXT, pszLabel: «Confirm password», state: confirmPasswordState, guidFieldType: Guid.Parse(CredentialView.CPFG_LOGON_PASSWORD_GUID) ); view.AddField( cpft: _CREDENTIAL_PROVIDER_FIELD_TYPE.CPFT_LARGE_TEXT, pszLabel: «Custom Provider», defaultValue: «Custom Provider», state: _CREDENTIAL_PROVIDER_FIELD_STATE.CPFS_DISPLAY_IN_DESELECTED_TILE ); return view; >

Следующий метод, который нас интересует это IsSupportedScenario, в котором перечисляеются сценарии использования нашего провайдера. В нём мы можем например разрешить использовать его для авторизации, но запретить использовать для разблокировки рабочей станции или не использовать его для смены пароля, такой кейс актуален например для авторизации через смарт карты.

private static bool IsSupportedScenario(_CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus) < switch (cpus) < case _CREDENTIAL_PROVIDER_USAGE_SCENARIO.CPUS_CREDUI: case _CREDENTIAL_PROVIDER_USAGE_SCENARIO.CPUS_UNLOCK_WORKSTATION: case _CREDENTIAL_PROVIDER_USAGE_SCENARIO.CPUS_LOGON: case _CREDENTIAL_PROVIDER_USAGE_SCENARIO.CPUS_CHANGE_PASSWORD: return true; case _CREDENTIAL_PROVIDER_USAGE_SCENARIO.CPUS_PLAP: case _CREDENTIAL_PROVIDER_USAGE_SCENARIO.CPUS_INVALID: default: return false; >>

И последний интересный метод, который отвечает непосредственно при отправке учетных данных для проверки подлинности.

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

Однако с реализацией данного метода есть проблема, в Windows 10 сценарии авторизации и разблокировки были объединены в единый сценарии CPUS_LOGON, который данный метод успешно отрабатывает, но согласно документации в ряде случаев используется сценарий CPUS_UNLOCK_WORKSTATION, с которым данный метод не отрабатывает. Когда я пробовал протестировать провайдер написанный Стивом, я столкнулся с этой проблемой, при попытке разблокировать рабочую станцию, возникала проблема, но стоило воспользоваться кнопкой Switch User, как авторизация успешно проходила. Что бы решить данную проблему необходимо обратиться к примеру предоставленному непосредственно компанией Microsoft и в реализации метода авторизации можно найти интересный комментарий, где сами программисты Microsoft указывают, что стандартная функция не подходит для успешного выполнения входа в систему. Больше похоже что сами разрабы Windows используют костыль для авторизации.

Читайте также:
Что за программа основные компоненты Windows live 2011

HRESULT KerbInteractiveUnlockLogonInit( _In_ PWSTR pwzDomain, _In_ PWSTR pwzUsername, _In_ PWSTR pwzPassword, _In_ CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, _Out_ KERB_INTERACTIVE_UNLOCK_LOGON *pkiul ) < // Note: this method uses custom logic to pack a KERB_INTERACTIVE_UNLOCK_LOGON with a // serialized credential. We could replace the calls to UnicodeStringInitWithString // and KerbInteractiveUnlockLogonPack with a single cal to CredPackAuthenticationBuffer, // but that API has a drawback: it returns a KERB_INTERACTIVE_UNLOCK_LOGON whose // MessageType is always KerbInteractiveLogon. // // If we only handled CPUS_LOGON, this drawback would not be a problem.

For // CPUS_UNLOCK_WORKSTATION, we could cast the output buffer of CredPackAuthenticationBuffer // to KERB_INTERACTIVE_UNLOCK_LOGON and modify the MessageType to KerbWorkstationUnlockLogon, // but such a cast would be unsupported — the output format of CredPackAuthenticationBuffer // is not officially documented. >

Так как в стандартных библиотеках нужного нам метода нет, для решения проблемы необходимо написать маленькую библиотеку на C++, в которую нам необходимо скопировать функции для упаковки учетных данных, а именно KerbInteractiveUnlockLogonPack и KerbInteractiveUnlockLogonInit. Далее мы сможем вызвать нужную функцию через использование PInvoke и проблема с неподдерживаемым сценарием будет решена. Что интересно, основное отличие заключается в установка типа сообщения сериализации, а именно сценария авторизации, для библиотеки ntsecapi, так как она использует различные подходы для сериализации учетных данных.

switch (cpus) < case CPUS_UNLOCK_WORKSTATION: pkil->MessageType = KerbWorkstationUnlockLogon; hr = S_OK; break; case CPUS_LOGON: pkil->MessageType = KerbInteractiveLogon; hr = S_OK; break; case CPUS_CREDUI: pkil->MessageType = (KERB_LOGON_SUBMIT_TYPE)0; // MessageType does not apply to CredUI hr = S_OK; break; default: hr = E_FAIL; break; >

После компиляции нашей небольшой библиотеки на С++, достаточно включить её в основную библиотеку Credential Providerа

[DllImport(«./OTP.Provider.Helper.dll», CharSet = CharSet.Unicode, SetLastError = true)] public static extern uint ProtectIfNecessaryAndCopyPassword( string pwzPassword, _CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, ref string ppwzProtectedPassword ); [DllImport(«./OTP.Provider.Helper.dll», CharSet = CharSet.Unicode, SetLastError = true)] public static extern uint KerbInteractiveUnlockLogonInit( string pwzDomain, string pwzUsername, string pwzPassword, _CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, ref IntPtr prgb, ref int pcb );

И вызвать её уже в методе GetSerialization

try < PInvoke.ProtectIfNecessaryAndCopyPassword(password, usage, ref protectedPassword); >catch (Exception ex) < Logger.Write(ex.Message); >var inCredSize = 0; var inCredBuffer = Marshal.AllocCoTaskMem(0); try < Marshal.FreeCoTaskMem(inCredBuffer); inCredBuffer = Marshal.AllocCoTaskMem(inCredSize); PInvoke.KerbInteractiveUnlockLogonInit(domain, shortUsername, protectedPassword, usage, ref inCredBuffer, ref inCredSize); pcpcs.clsidCredentialProvider = Guid.Parse(«D26F523C-A346-4FC8-B9B4-2B57EAEDA723»); pcpcs.rgbSerialization = inCredBuffer; pcpcs.cbSerialization = (uint)inCredSize; pcpcs.ulAuthenticationPackage = authPackage; pcpgsr = _CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE.CPGSR_RETURN_CREDENTIAL_FINISHED; return HRESULT.S_OK; >catch (Exception ex)

После того как мы собрали библиотеку, для её использования , необходимо добавить ключ в реестр. В ветке [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionAuthenticationCredential Providers] создаём ветку с GUID нашей библиотеки, который мы прописывали в классе CredentialProvider, тогда при авторизации появится плитка с выбором вашего провайдера. А также необходимо зарегистрировать CLSID нашего провайдера в ветке HKEY_CLASSES_ROOT.

Отображение плитки кастомного провайдера

Эксперименты и отладку рекомендуется делать в виртуальной машине, иначе можно потерять возможность авторизации в системе и придется заходить в безопасный режим, что бы удалить библиотеку и её упоминание из реестра. Исходный код можно найти на github.

Источник: habr.com

Как сделать программу для входа в windows

Шаг 2. Создание проекта

Создайте проект для нового приложения. В Visual Studio для этого нужно зайти в меню File > New > Project .

Создание нового проекта в Visual Studio

После этого появится окно New Project:

Окно New Project в интерфейсе Visual Studio

В поле Name нужно вписать название вашего проекта, в поле Location – указать нужную директорию, в Solution name – ввести название решения. Заполнили данные – нажимаем OK .

Главный класс нового проекта в Visual Studio

Шаг 3. Создание интерфейса

Создайте представление будущей формы авторизации, как показано на рисунке ниже. Добавьте два поля ( username и password ) и кнопку для входа.

5 шагов для создания простой формы входа на C#

Шаг 4. Настройка соединения с базой

Создайте класс connection для настройки соединения с базой. Пример реализации представлен в листинге ниже:

Интерфейс работающей программы

Исходный код этой простой формы авторизации вы найдете на Github.

У нас есть много полезных материалов по C# для начинающих:

  • Лучшие актуальные шпаргалки по C# на все случаи жизни
  • Видеокурс по C# с нуля: от основ до полноценного приложения
  • Самый понятный видеокурс по C# для новичков

Источник: proglib.io

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru