Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

Как программно залогинить пользователя   Найти похожие ветки 

 
VideoLord   (2004-09-21 18:09) [0]

Добрый день, мастера!

Сначала ситуация:

Есть сервер на Windows XP. На нем настроен autologon с указанием имени пользователя, пароля и домена в который входим.
При запуске машины все проходит отлично, юзер логинится на экране показывается его рабочий стол и все такое.

После подключения к серверу с помошью "удаленного рабочего стола" с тем же именем и паролем, на экране сервера появляется стандартное приглашение входа в систему (видимо происходит "user-switching"). Самое обидное, что после отключения удаленного сеанса, сервер в исходное состояние так и не возвращается, то есть рабочий стол не показывает и окошко с приглашением ввести пароль так и остается висеть на экране.

Теперь вопросы (решение хотя бы одного из них очень поможет): ;-)

1. Как программно заставить винду показать рабочий стол юзера, который был на ней уже залогинен, то есть просто восстановить свое состояние обратно.

2. Как в это окошко программно ввести имя/пароль и нажать "OK"? Проблема в том, что это какое-то непростое окно (насколько я понял, это гордость микрософта, это такая супер защищенная область, к которой может иметь доступ лишь ядро), по FindWindow или EnumWindows его найти нельзя (даже если поиск производится из сервиса).

Вот такие вот задачи стоят :(
Помогите решить, может кто уже сталкивался...


 
VideoLord   (2004-09-21 19:06) [1]

P.S.
После слов "юзер логинится" нужна еще запятая :)


 
VideoLord   (2004-09-22 10:32) [2]

Неужели никто не сталкивался/не знает куда копать?

p.s.
Вверху лучше гораздо :)


 
Cobalt ©   (2004-09-22 12:33) [3]

Попробуй отключить службу "Fast User Switching"
Потому что на Win2K  - ситуация - сеанс работы пользователя домена.
Делаем финт ушами - с другого компа логинимся с "Remote Desktop Connection" под тем же пользователем - на окне того компа, к которому логинимся - никакого, понимаешь, мерцания. При отключении удалённого логина - тоже всё тихо и спокойно.


 
VideoLord   (2004-09-22 15:14) [4]

Не помогло. Все то же самое.

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

Может быть, еще какая-то служба отвечает за удаленный рабочий стол?


 
Cobalt ©   (2004-09-22 23:20) [5]

Нет,"Remote Desktop Connection" создаёт полноценный сеанс - новый.
Попробуй почитать MSDN или добраться до Игоря Шевченко - бо я не знаю, что такое сеанс пользователя собственно.


 
VideoLord ©   (2004-09-23 12:23) [6]

Некоторые результаты:

По поводу 2 выяснилось, что это приглашение ввода пароля на самом деле есть несколько окошек на отдельном десктопе, причем то, что видит пользователь (картинка, две строки ввода) - это просто статическая картинка, на DC которой отрисовываются вводимые буквы и элементы анимации стиля XP

Поверх этой картинки лежит окно с классом SAS Window, невидимое, которое перехватывает события мыши и клавиатуры.
Никаких Edit"ов  и тому подобных оконных элементов здесь вообще нет, именно поэтому FindWindowEx и EnumWindows ничего не находят. Соответственно послать сообщение WM_CHAR/WM_KEYDOWN, чтобы ввести в нужное место логин и пароль некому...

Единственная программа на свете (из известных мне), которая умет что-то делать (перехватывать клавиатурный ввод, например) с окошком приглашения логина в систему - это PCACME. Ребята для этого написали драйвер уровня ядра, который загружается до процесса winlogon.exe и получает от этого какие-то преимущества. Разумеется, рассказывать, как они этого добились, они не хотят :)

Теперь по поводу пункта 1:
Когда юзер логинится в систему, для него создается WIN-машина, а в ней сразу три десктопа (активный рабочий стол, десктоп с логоном и десктоп для хранителя экрана). Есть функция, позволяющая получить хендл активного десктопа и переключаться между ними.
И она даже работает...  Частично :)
Можно переключиться с активного рабочего стола на какой-нибудь другой (либо на скринсейверовский, либо на логоновский), а вот обратно уже почему-то никак. Функция выполняется, никаких ошибок не выдает, только вот десктоп не переключается...

Игорь, ну где же вы? :)
Нужна ваша помощь!


 
Аноним   (2004-09-23 12:50) [7]

А ты уже изучил MSDN на темы winlgon и gina? Если нет, то читай, еще и в интернете где-то есть модуля с объявлениями для паскаля.


 
VideoLord ©   (2004-09-23 12:56) [8]

Да, мы тут уже третий день не вылезаем из MSDN :)
А заголовки для дельфи не особо принципиальны, мы сейчас на MS VS экспериментируем с этой задачей.


 
Аноним   (2004-09-23 13:01) [9]

Ну и что, научились программно логиниться?


 
VideoLord ©   (2004-09-24 16:19) [10]

Нет.
Видимо это нетривиальная задача...
Решили написать свой Remote Desktop. Это по трудозатратам гораздо эффективней :)


 
Анонимщик ©   (2004-09-24 16:49) [11]

Не знаю, сам я задачи в вашем виде не решал, но ведь и в msdn-е, и на rsdn-е есть примеры работы с gin-ой. И логин там производится на "ура".


 
Игорь Шевченко ©   (2004-09-27 10:44) [12]


> 1. Как программно заставить винду показать рабочий стол
> юзера, который был на ней уже залогинен, то есть просто
> восстановить свое состояние обратно.


Боюсь, что никак :) Это два разных сеанса.


 
WondeRu ©   (2004-09-27 14:24) [13]

VideoLord ©   (23.09.04 12:23) [6]
Поверх этой картинки лежит окно с классом SAS Window, невидимое, которое перехватывает события мыши и клавиатуры.
Никаких Edit"ов  и тому подобных оконных элементов здесь вообще нет, именно поэтому FindWindowEx и EnumWindows ничего не находят. Соответственно послать сообщение WM_CHAR/WM_KEYDOWN, чтобы ввести в нужное место логин и пароль некому...


Бредятина!!!!!!!!

читай 7 и 11 посты


 
VideoLord ©   (2004-10-04 02:53) [14]

WondeRu ©   (27.09.04 14:24) [13]

К сожалению, это именно так и реализовано.
msgina.dll перелопачена вдоль и поперек.
Пока что задача не решена...

P.S. У вас в Самаре все такие категоричные?



Страницы: 1 вся ветка

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.045 c
4-1096369963
bar
2004-09-28 15:12
2004.11.14
Сервисы и HKEY_CURRENT_USER. и FindWindow


14-1098544150
Кириешки
2004-10-23 19:09
2004.11.14
Очередное надувательство???


3-1097560479
Санёк
2004-10-12 09:54
2004.11.14
ADO - обновление данных перед редактированием


14-1098863072
alles
2004-10-27 11:44
2004.11.14
Ну и вопросы по HTML!


3-1098106449
Vir
2004-10-18 17:34
2004.11.14
mssql+odbc+нестандартный порт