#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
После того, как вы разблокируете рабочий стол, я почти уверен, что вы захотите снова его заблокировать.
Комментарии:
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