И снова о наболевшем: WinLogon проблема поиска окна
От: Alvares Украина  
Дата: 15.03.06 13:50
Оценка:
Доброе всем время суток.
Тема WinLogon уже не раз поднималась на RSDN'е, и столкнувшись со своей проблемой, я первым делом просмотрел все ветки на предмет обсуждения работы с WinLogon. Но ничего из ранее обсуждаемого не смог применить для своей задачи
Задача следующая.
Имеется приложение (MFC, но я думаю что это неважно), которое получает данные от внешнего устройства (сканер штрих-кодов) и постит эти данные в активное приложение. С некоторых пор встал вопрос постить эти данные в окошко PASSWORD на WinLogon десктопе.
Действия следующие:
— Запуск программы под обычным десктопом;
— Смена пользователя;
— WinLogon.
Собственно вопрос: как можно получить дескриптор окна ввода пароля на WinLogon'е из потока, который был создан в Default десктопе?
Внимание, поток работает в обычном приложении, не сервисе.
Какие еще могут быть варианты управления элементами WinLogon десктопа из моего потока?

С уважением, Сергей.
don Alvares
Re: И снова о наболевшем: WinLogon проблема поиска окна
От: Gigachel Украина  
Дата: 15.03.06 14:07
Оценка: +1
Здравствуйте, Alvares, Вы писали:

A>Доброе всем время суток.

A>Тема WinLogon уже не раз поднималась на RSDN'е, и столкнувшись со своей проблемой, я первым делом просмотрел все ветки на предмет обсуждения работы с WinLogon. Но ничего из ранее обсуждаемого не смог применить для своей задачи
A>Задача следующая.
A>Имеется приложение (MFC, но я думаю что это неважно), которое получает данные от внешнего устройства (сканер штрих-кодов) и постит эти данные в активное приложение. С некоторых пор встал вопрос постить эти данные в окошко PASSWORD на WinLogon десктопе.
A>Действия следующие:
A>- Запуск программы под обычным десктопом;
A>- Смена пользователя;
A>- WinLogon.
A>Собственно вопрос: как можно получить дескриптор окна ввода пароля на WinLogon'е из потока, который был создан в Default десктопе?
A>Внимание, поток работает в обычном приложении, не сервисе.
A>Какие еще могут быть варианты управления элементами WinLogon десктопа из моего потока?

A>С уважением, Сергей.


Я думаю что тебе надо смотреть в сторону Gina dll, если я правильно понял и ты хочешь реализовать custom авторизацию.
Re[2]: И снова о наболевшем: WinLogon проблема поиска окна
От: Alvares Украина  
Дата: 15.03.06 14:34
Оценка:
G>Я думаю что тебе надо смотреть в сторону Gina dll, если я правильно понял и ты хочешь реализовать custom авторизацию.
Мне нужно "просто" (или не очень ) получить доступ к элементам десктопа (дескриптор текстового поля).
don Alvares
Re[3]: И снова о наболевшем: WinLogon проблема поиска окна
От: Gigachel Украина  
Дата: 15.03.06 15:30
Оценка:
Здравствуйте, Alvares, Вы писали:


G>>Я думаю что тебе надо смотреть в сторону Gina dll, если я правильно понял и ты хочешь реализовать custom авторизацию.

A>Мне нужно "просто" (или не очень ) получить доступ к элементам десктопа (дескриптор текстового поля).

Чтобы получить доступ к этому десктопу тебе понадобится сервис и поток в нем, работающий на winsta0\winlogon десктопе — тогда из него ты сможешь выполнять операции вроде FindWindow для нужных тебе контролов.
Re[4]: И снова о наболевшем: WinLogon проблема поиска окна
От: Alvares Украина  
Дата: 15.03.06 16:21
Оценка:
G>Чтобы получить доступ к этому десктопу тебе понадобится сервис и поток в нем, работающий на winsta0\winlogon десктопе — тогда из него ты сможешь выполнять операции вроде FindWindow для нужных тебе контролов.

Если я правильно понял, то мне нужно в моем приложении запустить сервис, в нем создать поток, который потом сможет иметь доступ к контролам на WinLogon'е?
Хорошо, а как же тогда мое основное приложение будет передавать данные в окно пароля на WinLogon'е?
Цепочка следующая: приложение получает данные от сканера, затем проверяет наличие активного десктопа WinLogon, если находит его, то запускает сервис, в сервисе стартует поток, это поток принимает (каким-то образом) данные от приложение и постит их пассворд филд?
don Alvares
Re[5]: И снова о наболевшем: WinLogon проблема поиска окна
От: Gigachel Украина  
Дата: 15.03.06 16:38
Оценка:
Здравствуйте, Alvares, Вы писали:


G>>Чтобы получить доступ к этому десктопу тебе понадобится сервис и поток в нем, работающий на winsta0\winlogon десктопе — тогда из него ты сможешь выполнять операции вроде FindWindow для нужных тебе контролов.


A>Если я правильно понял, то мне нужно в моем приложении запустить сервис, в нем создать поток, который потом сможет иметь доступ к контролам на WinLogon'е?

A>Хорошо, а как же тогда мое основное приложение будет передавать данные в окно пароля на WinLogon'е?
A>Цепочка следующая: приложение получает данные от сканера, затем проверяет наличие активного десктопа WinLogon, если находит его, то запускает сервис, в сервисе стартует поток, это поток принимает (каким-то образом) данные от приложение и постит их пассворд филд?

Получать данные от сканера может получится напрямую из сервиса?
Если нет, то вам нужно реализовать протокол взаимодействия между своим приложением
и сервисом, через пайпы, сокеты или что-то подобное.
Сервис ваще желательно запускать автоматически дабы не зависеть от юзер-приложения, которое может работать и под неадминским аккаунтом.
Re[6]: И снова о наболевшем: WinLogon проблема поиска окна
От: Alvares Украина  
Дата: 15.03.06 17:03
Оценка:
G>Получать данные от сканера может получится напрямую из сервиса?
Я не работал до этого с сервисами, так что прошу прощения за ламерский вопрос: можно ли сделать обычный поток (CreateThread) "сервисным"? Если да, и он сможет после такого перевоплощения работать в обычном режиме, то лучше
G>Если нет, то вам нужно реализовать протокол взаимодействия между своим приложением
G>и сервисом, через пайпы, сокеты или что-то подобное.
общение между приложением и сервисом возможно только посредством сокетов и пайпов? Какой наиболее благоприятный путь выбрать?
G>Сервис ваще желательно запускать автоматически дабы не зависеть от юзер-приложения, которое может работать и под неадминским аккаунтом.
В какой момент запускать сервис?До логона?
don Alvares
Re[7]: И снова о наболевшем: WinLogon проблема поиска окна
От: Gigachel Украина  
Дата: 15.03.06 17:27
Оценка:
Здравствуйте, Alvares, Вы писали:


G>>Получать данные от сканера может получится напрямую из сервиса?

A>Я не работал до этого с сервисами, так что прошу прощения за ламерский вопрос: можно ли сделать обычный поток (CreateThread) "сервисным"? Если да, и он сможет после такого перевоплощения работать в обычном режиме, то лучше

Сервис — это отдельное приложение

G>>Если нет, то вам нужно реализовать протокол взаимодействия между своим приложением

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

МС рекомендует пайпы для общения приложений и сервисов на одном компьютере.

G>>Сервис ваще желательно запускать автоматически дабы не зависеть от юзер-приложения, которое может работать и под неадминским аккаунтом.

A>В какой момент запускать сервис?До логона?

Если сервис зарегистрирован как автоматический, то он запускается системой во время ее старта.
Re[8]: И снова о наболевшем: WinLogon проблема поиска окна
От: FirstStep Россия  
Дата: 16.03.06 02:16
Оценка:
Собственно возникает вопрос, а если будет активен FastUserSwitch, то как выбрать нужный логин и ввести для него пароль ?

Т.е. другими словами: имеем сервис, который запускается до процедуры аутентификации. Сервис ждёт некого события, допустим вставки usb брелка. Считывает оттуда информацию о логине и пароле. После чего надо чтобы эти данные использовались для входа в систему. Каким образом решить ? ОС — WinXP. Желательно без написания custom gina.dll.
Заранее спасибо.
Re: И снова о наболевшем: WinLogon проблема поиска окна
От: dimaricus  
Дата: 16.03.06 05:53
Оценка:
Здравствуйте, Alvares, Вы писали:

A>Задача следующая.

A>Имеется приложение (MFC, но я думаю что это неважно), которое получает данные от внешнего устройства (сканер штрих-кодов) и постит эти данные в активное приложение. С некоторых пор встал вопрос постить эти данные в окошко PASSWORD на WinLogon десктопе.

А вы уверены, что это все нужно? Насколько я знаю, сканеры штрихкодов работают как аналог клавиатуры и достаточно просто SetFocus нужное окно и сканернуть что-нибудь.
Так что если Вам не нужно как-то полученные коды обрабатывать, то никаких прог и не требуется.
Re[2]: И снова о наболевшем: WinLogon проблема поиска окна
От: Alvares Украина  
Дата: 16.03.06 07:56
Оценка:
A>>Задача следующая.
A>>Имеется приложение (MFC, но я думаю что это неважно), которое получает данные от внешнего устройства (сканер штрих-кодов) и постит эти данные в активное приложение. С некоторых пор встал вопрос постить эти данные в окошко PASSWORD на WinLogon десктопе.

D>А вы уверены, что это все нужно?

Можешь не сомневаться
D>Насколько я знаю, сканеры штрихкодов работают как аналог клавиатуры и достаточно просто SetFocus нужное окно и сканернуть что-нибудь.
Тебя ввели в заблуждение. Сканер — это обычный девайс. Может подключаться как к USB, так и COM порту. И никто не будет постить данные от него кроме специальной программы. Эту программу пишу я SetFocus можно делать только тогда, когда ты имеешь доступ к окнам на десктопе. Как известно, из одного десктопа нельзя получить простой доступ к к онам другого Поэтому и возникла эта тема
D>Так что если Вам не нужно как-то полученные коды обрабатывать, то никаких прог и не требуется.
Коды обрабатывать нужно, более того, существует целая система различных действий которые нужно совершить, получив определенный код. А код, еще и распарсить нужно, удалив техническую информацию прицепленную сканером. Но это все есть и работает на-ура, вопрос — передача данных в пассворд окно на WinLogon десктопе из приложения, запущенного на Default десктопе.
don Alvares
Re[8]: И снова о наболевшем: WinLogon проблема поиска окна
От: Alvares Украина  
Дата: 16.03.06 08:07
Оценка:
G>Сервис — это отдельное приложение
Можно ли переделать(запускать) существующее MFC приложение под сервис или необходимо писать отдельное приложение которое будет сложить шлюзом между десктопами?

G>МС рекомендует пайпы для общения приложений и сервисов на одном компьютере.

Хорошо, спасибо за подсказку.

G>Если сервис зарегистрирован как автоматический, то он запускается системой во время ее старта.

До WinLogon'а или после, до момента згрузки драйверов (конкретно USB драйвер) или после этого?
don Alvares
Re[9]: И снова о наболевшем: WinLogon проблема поиска окна
От: Gigachel Украина  
Дата: 16.03.06 08:26
Оценка:
Здравствуйте, Alvares, Вы писали:

G>>Сервис — это отдельное приложение

A>Можно ли переделать(запускать) существующее MFC приложение под сервис или необходимо писать отдельное приложение которое будет сложить шлюзом между десктопами?

MFC с сервисами не очень дружит — лучше писать отдельное приложение.

G>>МС рекомендует пайпы для общения приложений и сервисов на одном компьютере.

A>Хорошо, спасибо за подсказку.

G>>Если сервис зарегистрирован как автоматический, то он запускается системой во время ее старта.

A>До WinLogon'а или после, до момента згрузки драйверов (конкретно USB драйвер) или после этого?

После загрузки драйверов, после создания десктопа winlogon — фактически это момент когда
появился диалог логина в систему.
Re[10]: И снова о наболевшем: WinLogon проблема поиска окна
От: Alvares Украина  
Дата: 16.03.06 08:47
Оценка:
G>MFC с сервисами не очень дружит — лучше писать отдельное приложение.
G>После загрузки драйверов, после создания десктопа winlogon — фактически это момент когда
G>появился диалог логина в систему.
Спасибо за помощь, попытаюсь сварганить что-то похожее на сервис и проверить его работу с WinLogon.
Возможно, что скоро появятся новые вопросы.
don Alvares
Re: Уж поверь, нужно. :)
От: Darkman_VLT Россия  
Дата: 23.03.06 07:31
Оценка:
Это всё нужно.
GINA это как раз то, что отвечает за авторизацию в Windows
И интерфейс как раз и разработан для того, что бы аторизировать всё и вся.

Оч. хорошая статья была в Russian MSDN Magazine от (06/05)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.