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

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

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

Я ориентируюсь на ОС NT5.


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


person Dan Cristoloveanu    schedule 06.10.2008    source источник
comment
Почему? Вы уверены, что нет лучшего способа сделать то, что вы пытаетесь сделать?   -  person Coincoin    schedule 06.10.2008
comment
Это звучит как очень плохая идея. Какова цель этого? Наверное, есть лучшее решение...   -  person    schedule 06.10.2008
comment
Я почти уверен, что это плохая идея и (я очень надеюсь) невозможна.   -  person GEOCHET    schedule 06.10.2008
comment
Попробуйте переопределить GINA, но, как говорят два других, это довольно плохая идея. Зачем вам это делать, вы можете просто запустить службу на компьютере, чтобы делать на нем все, что захотите.   -  person Henry B    schedule 06.10.2008
comment
Можете ли вы вызвать какие-либо советы, которые сработали для вас? У меня та же проблема, и я нашел эту статью (waynes-world-it.blogspot.com/2008/04/) интересно. Однако у меня это не работает, так как целевое приложение (Rational Functional Tester), которое должно периодически запускаться в интерактивном режиме, проверяет, что рабочий стол действительно (а не ложно) разблокирован.   -  person dma_k    schedule 13.07.2010
comment
Для всех вас здесь наверху, отметив, что это плохо и невозможно. Мы строим платформу удаленного тестирования, и нам нужно удаленно управлять многими компьютерами параллельно. Заблокированные компьютеры — это плохо, так как мы управляем мышью и клавиатурой, а захватываем экран для работы с программами. Это чистое зло? Опомнись уже...   -  person Kobor42    schedule 10.04.2014
comment
Возможны другие реализации для аутентификации пользователя через Windows с использованием С#, могут ли люди просто ответить на вопрос ОП, не вынося суждений о том, чего они пытаются достичь?   -  person ataraxia    schedule 26.07.2019


Ответы (4)


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

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

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

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

person Henry B    schedule 06.10.2008
comment
@finnw: я согласен насчет языка. Я отредактировал его, чтобы сделать его нейтральным по роду занятий, надеюсь, с ОП все в порядке. Однако вы должны быть в состоянии удалить свой -1. - person Platinum Azure; 29.10.2011
comment
Еще одно соображение: GINA считается устаревшей. См. msdn.microsoft.com/en-us/magazine/cc163489.aspx - person Henry Aloni; 09.09.2013

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

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

И я только что нашел еще один сценарий где можно разблокировать рабочий стол ;)

person VonC    schedule 06.10.2008

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

person Johan Bresler    schedule 06.10.2008
comment
Это не отвечает на вопрос. - person ataraxia; 26.07.2019

В моей ситуации мне нужно было восстановить сеанс консоли после отключения сеанса терминала (я подключаюсь к киоску 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

person zomf    schedule 28.10.2011