Я хотел бы написать небольшое приложение, которое разблокирует рабочую станцию. Чтобы описать то, что мне нужно, очень просто: иметь исполняемый файл, который запускается и в определенное время (скажем, в полночь) разблокирует рабочую станцию. Конечно, приложение знает пользователя и пароль учетной записи, вошедшей в систему.
Я знаю API LogonUser и пробовал его использовать, но потерпел неудачу. У кого-нибудь есть решение, отрывок кода, который действительно работает для этой проблемы?
Я нацелен на ОС NT5.
Ну, раз уж люди начали спрашивать, в чем причина: я работаю над приложением для совместного использования рабочего стола и хочу добавить функцию разблокировки рабочей станции. Наличие очень маленького и простого приложения для разблокировки станции в определенное время позволяет разделить проблему и избежать деталей интеграции.
Это звучит как очень плохая идея. Какая у этого цель? Наверное, есть лучшее решение ...
Я почти уверен, что это плохая идея и (очень надеюсь) невозможная.
Попробуйте переопределить GINA, но, как говорят двое других, это довольно плохая идея. Зачем вам это нужно, вы можете просто запустить службу на компьютере, чтобы делать с ней все, что вы хотите.
Не могли бы вы дать какой-нибудь совет, который сработал для вас? Я занимаюсь той же проблемой, и эта статья (waynes-world-it.blogspot.com/2008/04/…) показалась мне интересной. Однако у меня это не работает, поскольку целевое приложение (Rational Functional Tester), которое должно периодически запускаться в интерактивном режиме, проверяет, действительно ли (а не поддельно) разблокирован рабочий стол.
Для всех вас здесь, заметивших, что это плохо и невозможно. Мы создаем платформу для удаленного тестирования, и нам необходимо удаленно управлять множеством компьютеров параллельно. Заблокированные компьютеры - это плохо, поскольку мы управляем мышью, клавиатурой и захватываем экран для работы с программами. Это чистое зло? Опомнись уже ...
Существует больше реализаций для аутентификации пользователя через Windows с использованием C#, могут ли люди не просто ответить на вопрос OP, не вынося суждения о том, чего они пытаются достичь?





Пусть ваше приложение работает как служба, тогда вам не нужны пользователь / пароль, поскольку он настроен с помощью службы.
Это не отвечает на вопрос.
Просто чтобы у вас был ответ на этот вопрос, вместо того, чтобы люди оставляли ответы, которые могли бы быть лучше в виде комментариев.
Это, безусловно, возможно, хотя, как многие люди уже сказали, что это не очень разумно, что произойдет, если кто-то будет проходить мимо компьютера, когда он разблокируется, как долго им придется поиграть и т. д.?
В любом случае, помимо предложения вам иметь службу для выполнения любой работы, которую вы хотите на компьютере, или даже удаленного подключения к компьютеру для выполнения работы, вы можете сделать пользователя следующей информацией. (что касается «фрагментов кода», вы можете сделать это самостоятельно)
http://www.paralint.com/projects/aucun/ - это реализация GINA, которая сможет дать вам права для входа в систему, даже если кто-то другой уже вошел в систему. Посмотрите, это может быть то, что вы ищете, и это намного безопаснее, чем разблокировать рабочую станцию в определенное время.
В качестве альтернативы рассмотрите возможность написания собственной реализации 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
@finnw: Насчет языка я согласен. Я отредактировал его, чтобы сделать его нейтральным, надеюсь, с OP все в порядке. Однако вы сможете удалить свой -1.
Еще одно соображение: GINA считается устаревшим. См. msdn.microsoft.com/en-us/magazine/cc163489.aspx
Просто чтобы добавить еще одно предположение (без каких-либо суждений), autoit (язык сценариев Windows) может иметь ответ, как описано в этом потоке:
Как разблокировать рабочий стол Xp
И я только что нашел еще один сценарий, в котором можно разблокировать рабочий стол;)
В моей ситуации мне нужно было иметь возможность восстановить сеанс консоли после того, как я отключил сеанс терминала (я подключаюсь к киоску WinXPe с сенсорным экраном, но без клавиатуры).
Вот решение для командной строки, которое, как я обнаружил, работает. Вместо того, чтобы закрыть окно сеанса для отключения, я запускаю командный файл со следующей строкой. Мой сеанс закрыт, а сеанс консоли восстановлен разблокированным.
автоматически разблокировать рабочую станцию после терминальной сессии на WinXP
tscon.exe 0 /dest:console
для Windows Vista / 7 номер сеанса консоли изменился с 0 на 1, поэтому вам нужно использовать
tscon.exe 1 /dest:console
Ссылка на источник: http://arstechnica.com/civis/viewtopic.php?f=15&t=69113
Почему? Вы уверены, что нет лучшего способа делать то, что вы пытаетесь сделать?