У меня есть служба Windows, что я хочу использовать, чтобы программно снять блокировку компьютера, используя логин и пароль учетной записи.
В этой статье https://technet.microsoft.com/en-us/library/dn751047(в=ВУ.11).aspx, который объясняет процесс проверки подлинности для входа в Windows на следующем рисунке:
Как показано выше, на шаге 5 пользователь вводит учетные данные в пользовательский интерфейс входа в систему. Чего я хочу добиться-это, чтобы служба Windows введите данные для входа в Windows выполнить вход.
Нет входа в Windows API, чтобы добиться этого. Как видно на другие вопросы, использования WinAPI'функция S метода logonuser
успешно выполняет проверку подлинности и возвращает маркер, но он не переключается на приложение на рабочем столе и интерфейс входа остается на экране.
Большинство статей и так ответы подсказка к поставщикам учетные данные, но все поставщики учетные данные образцы требуют взаимодействия пользователя с Пользовательский интерфейс входа в систему.
Обновление: я вижу, что некоторые пользователи не'т точно понял вопрос и предлагаете обходные пути, которые не подходят для моего случая. Рабочий процесс, который я'м пытаюсь достичь следующих:
Сейчас меня интересует, что делает шаги 4 и 4.1.
Просто во время прохождения... но это'т там, в среде Microsoft'с образцами, поставщик учетных данных, который принимает асинхронный ввод? Я'вэ, конечно, написано одно, который входит в систему пользователь, который просматривает приемлемых отпечатков пальцев не важно, что отображается плитка. Для меня это означает, что взаимодействие с проблемы должны быть не более чем неявное, но, возможно, я'м что-то упускаю.
Но, возможно, я'м не. Хотя я не'т сомневаюсь намерение состоит в том, что асинхронный входной сигнал будет поступать от пользователя, выступающего на оборудовании, а при сканировании пальца, я не'т вспомнить, это как правило. Если это'ов нет, то вы можете иметь свой программный вариант в виде представления учетных данных, как если бы они'вэ были собраны асинхронно - не от устройства, что'ы, очевидно, подключены к компьютеру, но с вашей стороны-канал HTTP с кто знает, что.
Так что, может у вас есть поставщик учетных данных прислушиваться к ЭКП от вашего сервиса для уведомления учетные данные, которые вы собрали через боковой канал? Или у вашим услугам прослушивание RPC от вашего поставщика учетных данных, чтобы задать учетные данные доступны еще? И я могу'т быть удивлены, если в одном направлении закрыта - для безопасности, даже - но я'd есть мысль, тот или иной, можно заставить работать.
Должны ли вы хотите делать все это, я не'т хотите попасть.
Не подумай, что я оправдываю этим, но просто даем вам решение проблемы. И это'т программно взаимодействовать с процессом Winlogon. Это программно работать вокруг него.
Использовать Windows автологина собственность. И перезагрузить, чтобы изменения для пользователя. Обратите внимание, это включает хранение пароль в реестре открытым текстом.
Конкретно эти включает в
Программное обеспечение в HKLM\Майкрософт\Windows в НТ\раздел CurrentVersion\Winlogon для\AutoAdminLogin Программное обеспечение в HKLM\Майкрософт\Windows в НТ\раздел CurrentVersion\Winlogon для\разделы defaultusername Программное обеспечение в HKLM\Майкрософт\Windows В в NT\CurrentVersion равное\с Winlogon\параметр defaultpassword
Редактировать
Помогает при 4. Не'т помочь с 4.1. Если вы не хотите перезагружать, чтобы разблокировать в чем я сомневаюсь.
Еще одна альтернатива, которая звучит многообещающе \ стоит разобраться упоминается на старый вопрос https://stackoverflow.com/a/35173886/4640588
Я написал реклама решение для этого, называется SasLibEx. SasLibEx-это библиотека, предназначенная для разработчиков, которая поддерживает C/C++ и Delphi изначально.
SasLibEx можете:
У меня почти такие же требования для селен основу то, что я строю. Короче говоря, мне нужно, чтобы запустить приложение в Windows станции пользователя (WinSTA0) - что означает, что пользователь a пришлось регистрироваться в ВМ.
Я уже сделал проект с диспетчер учетных данных и использовать это для достижения следующих рабочих процессов:
Если я правильно понял ваши требования, вам необходимо создать в Диспетчере учетных данных, которые предоставляет сервер (http, именованных каналов и т. д.), чтобы связаться с учетными данными для автоматического входа - не нужно тратить время на UI здесь. Используем метод рекомендации
по реализации ITestWindowsCredentialProvider
, чтобы запустить свой сервер и UnAdvice`, чтобы остановить его.
Я бы предложил следующее, чтобы помочь вам попасть туда:
Также, для более широкой картины, вы должны иметь в виду, что все эти процессы имеют различный доступ (и жизни для COM-компонентов) для станций ОС Windows, настольных ПК и запускать под разными пользователями. Однако я не думаю, что это будет актуально для вас много.
Вы можете найти базу кодов диспетчер учетных данных здесь: https://github.com/phaetto/windows-credentials-provider
Ваша задача заключается в реализации интерфейсов поставщика учетных данных, а в точке, где ваши услуги получают учетные данные могут быть легко переправлены к logonui - посмотри на этот ответить.
Цель состоит в том, чтобы реализовать стандартную плитку, которая может упаковать эти учетные данные.
Мой собственный поставщик учетных данных также имеет автоматический вход в систему/разблокировки поведения в некоторых ситуациях.
Про-грамматически обход/лесозаготовки на пользователя's в имени это страшно в отношении кибербезопасности.
Я'м не уверен, что вы пытаетесь сделать, но почему бы не развернуть выполнить задачу, чтобы выполнить работу с помощью учетной записи службы на машине, а?
Вы можете настроить его, чтобы работать, даже когда пользователь не вошел в систему на определенное время/событие. Если это не't работа для вас, не могли бы вы описать вашу ситуацию чуть подробнее?