Разблокируйте рабочую станцию Windows программно

#windows #security #winapi

Вопрос:

Я хотел бы написать небольшое приложение, которое разблокирует рабочую станцию. Изложить спецификации того, что мне нужно, очень просто: есть exe-файл, который запускается и в определенное время (скажем, в полночь) разблокирует рабочую станцию. Конечно, приложение знает пользователя и пароль учетной записи, вошедшей в систему.

Я знаю об API LogonUser и пытался использовать его, но потерпел неудачу. У кого-нибудь есть решение, отрывок кода, который действительно работает для этой проблемы?

Я ориентируюсь на операционные системы NT5.


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

Комментарии:

1. Почему? Вы уверены, что нет лучшего способа сделать то, что вы пытаетесь сделать?

2. Это звучит как очень плохая идея. Какова цель этого? Возможно, есть лучшее решение…

3. Я почти уверен, что это плохая идея и (я действительно надеюсь) невозможная.

4. Подумайте о том, чтобы переиграть ДЖИНУ, но, как говорят двое других, это довольно плохая идея. Зачем вам это нужно, вы можете просто запустить службу на компьютере, чтобы в любом случае делать на нем все, что вы хотите.

5. Можете ли вы, пожалуйста, дать какой-либо совет, который сработал для вас? Я сталкиваюсь с той же проблемой и нашел эту статью ( waynes-world-it.blogspot.com/2008/04/… ) интересно. Однако это не работает для меня, так как целевое приложение (Rational Functional Tester), которое должно периодически запускаться в интерактивном режиме, проверяет, что рабочий стол на самом деле (не фальшиво) разблокирован.

Ответ №1:

Просто чтобы у вас был ответ на этот вопрос, а не люди, оставляющие ответы, которые, возможно, лучше использовать в качестве комментариев.

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

В любом случае, помимо предложения вам предоставить услугу для выполнения любой работы, которую вы хотите, на компьютере hte, или даже удаленного подключения к компьютеру для выполнения работы, вы можете воспользоваться следующей информацией. (что касается «кодовых выдержек», вы можете сделать это сами)

http://www.paralint.com/projects/aucun/ — это реализация GINA, которая сможет предоставить вам права на вход в систему, даже если кто-то другой уже вошел в систему. Посмотрите на это, это может быть то, что вы ищете, и это намного безопаснее, чем разблокировать рабочую станцию в определенное время.

В качестве альтернативы рассмотрите возможность написания собственной реализации GINA, которая выполнит разблокировку в запланированное время.

Информация о ДЖИНЕ

http://msdn.microsoft.com/en-gb/magazine/cc163803.aspx

http://msdn.microsoft.com/en-us/magazine/cc163786.aspx

После того, как вы разблокируете рабочий стол, я почти уверен, что вы захотите снова его заблокировать.

http://www.codeproject.com/win32/AntonioWinLock.asp

Комментарии:

1. @finnw: Я согласен с языком. Я отредактировал его, чтобы сделать нейтральным к занятиям, надеюсь, с операцией все в порядке. Однако вы должны иметь возможность удалить свой -1.

2. Еще одно соображение : ДЖИНА считается устаревшей. Видишь msdn.microsoft.com/en-us/magazine/cc163489.aspx

Ответ №2:

Просто чтобы добавить еще одну зацепку (без каких-либо суждений), autoit (язык сценариев Windows) может дать ответ, как описано в этой теме:

Как разблокировать рабочий стол Xp

И я только что нашел другой сценарий, в котором может потребоваться разблокировать рабочий стол 😉

Ответ №3:

Позвольте вашему приложению работать как службе, тогда вам не понадобится пользователь/пароль, как это настроено в службе.

Комментарии:

1. Это не ответ на вопрос.

Ответ №4:

В моей ситуации мне нужно было восстановить сеанс консоли после отключения сеанса терминала (я подключаюсь к киоску WinXPe с сенсорным экраном, но без клавиатуры).

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

  • автоматическая разблокировка рабочей станции после терминальной сессии на WinXP
     tscon.exe 0 /dest:console
     
  • для Windows Vista/7 номер сеанса консоли изменился с 0 на 1, поэтому вам необходимо использовать
     tscon.exe 1 /dest:console
     

Ссылка на источник: http://arstechnica.com/civis/viewtopic.php?f=15amp;t=69113