Разблокировать локальный компьютер с помощью .net - PullRequest
8 голосов
/ 23 апреля 2011

Есть ли способ, без использования DLL инъекций, сервисов и прочего, разблокировать локальный компьютер с помощью .net?Имя пользователя и пароль Windows доступны для моей программы.

Ответы [ 2 ]

5 голосов
/ 24 апреля 2011

Я думаю, что нет функции .NET, которую можно использовать для разблокировки компьютера, и нет короткого пути для ее достижения. Но есть способ.

Вам необходимо реализовать свой собственный компонент ICredentialProvider, подключить его к механизму проверки подлинности Windows и реализовать связь между ним и вашим приложением.

Механизм проверки подлинности Windows 7 состоит из двух частей. Это WinLogon и LogonUI. LogonUI отвечает за отображение окна входа в систему и уведомление WinLogon о действиях пользователей. Winlogon реагирует на события из LogonUI и выполняет необходимые действия для входа в систему пользователей, выхода из системы, блокировки сеансов и разблокировки сеансов.

Microsoft предоставляет механизм для привязки пользовательского поведения к LogonUI. Для этого вам нужно создать COM-объект, который реализует ICredentialProvider, и зарегистрировать его в системе. Ваш компонент может сообщить LogonUI, чтобы WinLogon разблокировал сеанс.

Вот несколько примеров создания пользовательских провайдеров учетных данных: Как создать пользовательский интерфейс входа в систему в Windows Vista , Создание пользовательских настроек входа в систему с поставщиками учетных данных для Windows Vista

Этот механизм будет работать для Windows Vista и Windows 7. Вам необходимо использовать аналогичный механизм, называемый GINA, если вы хотите добиться того же результата для Windows XP. Здесь вы можете узнать больше о GINA: Winlogon и GINA

Был взлом, что вы могли как-то «разблокировать» сеанс в Windows XP.

WinLogon в Windows XP создал дополнительный рабочий стол и переключился на него, когда пользователь решил заблокировать сеанс. Можно было вернуться к «обычному» рабочему столу с помощью Windows API. Все работало нормально, кроме WinLogon, хотя эта система заблокирована и не реагировала на Ctrl-Alt-Del. Я считаю, что это не будет работать для Windows Vista и 7. Но вы можете попробовать. Это может быть проще, чем реализация собственного поставщика учетных данных.

Вот пример того, как это сделать: Удаленно разблокировать рабочую станцию ​​Windows

Надеюсь, это ответило на ваш вопрос.

1 голос
/ 23 апреля 2011

Нет, по крайней мере, не в контексте, указанном в вашем вопросе.Но я должен спросить - почему вы хотите его разблокировать?Если вам нужно приложение для запуска, машина не должна быть разблокирована, чтобы это произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...