Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

User Session Change...   Найти похожие ветки 

 
Makhanev A.S. ©   (2004-03-03 20:03) [0]

Может, у кого-либо есть опыт ловли смены сессии пользователя (Win2K, WinXP) из сервиса?


 
Soft ©   (2004-03-03 23:52) [1]

The LogonUser function attempts to perform a user logon operation. You specify the user with a user name and domain, and authenticate the user with a clear-text password. If the function succeeds, you receive a handle to a token that represents the logged-on user. You can then use this token handle to impersonate the specified user, or in most cases, to create a process running in the context of the specified user.

BOOL LogonUser(

   LPTSTR lpszUsername, // string that specifies the user name
   LPTSTR lpszDomain, // string that specifies the domain or server
   LPTSTR lpszPassword, // string that specifies the password
   DWORD dwLogonType, // specifies the type of logon operation
   DWORD dwLogonProvider, // specifies the logon provider
   PHANDLE phToken // pointer to variable to receive token handle
  );


 
Makhanev A.S. ©   (2004-03-04 16:28) [2]


> Soft ©   (03.03.04 23:52) [1]

я про "ловлю" события смены сесии, а не про ее смену самому.


 
BlackTiger ©   (2004-03-04 16:53) [3]

Насколько я слышал, человеческого способа не существует. Один товарищ просто сделал некий "LogonSensor". Суть его была в том, что по таймеру анализировался текущий пользователь или его отсутствие, если логона не было (не было сделано входа, или использовался Fast User Switching).


 
Defunct ©   (2004-03-04 18:04) [4]

Makhanev A.S. ©   (04.03.04 16:28) [2]

Просто мысли вслух...

Мммм.. поставьте ловушку всех сообщений винды. Рагистрируйте в какой-то файл, может отловите сообщение которое соответствует смене сессии.


 
WebErr ©   (2004-03-04 18:11) [5]


> Defunct ©   (04.03.04 18:04) [4]
> Makhanev A.S. ©   (04.03.04 16:28) [2]
>
> Просто мысли вслух...
>
> Мммм.. поставьте ловушку всех сообщений винды. Рагистрируйте
> в какой-то файл, может отловите сообщение которое соответствует
> смене сессии.

Этих сообщений болле 2000, посылаться они могут с потрясающей частотой, угадать, какое из сообщений (записанных, причём, численно - а то как ещё?) и есть смена сессии не возможно физически. Нету таких гениев-супермэнов, есть либо гении, либо супермэны! :))))


 
Defunct ©   (2004-03-04 18:54) [6]

WebErr ©   (04.03.04 18:11) [5]

Ну так мы ведь знаем, что ищем. Ищем то, чего нет в модуле Messages. IMHO отфильтровать все известные сообщения не составит труда, имея полный список сообщений на момент смены сессии.


 
BiN ©   (2004-03-04 21:46) [7]

1. самое простое - Winlogon Notification Packages (см МСДН)
2. сложнее - внедрение в winlogon и перехват LogonUser из GINA или подобное


 
Makhanev A.S. ©   (2004-03-05 18:39) [8]

BiN ©   (04.03.04 21:46) [7]
Первый вариант мы разрабатывали, отрадно, что его здесь тоже упомянули.

А а вот вариант-2 показался несколько непонятным...
По крайней мере в МСДНе я не усек его преимуществ перед Вариантом1.

Если не сложно, можете вкратце поясниь суть варианта 2?
Я так понял, что назначение GINA - обеспечение идентификации и аутентификации юзера...


 
Cobalt ©   (2004-03-06 11:51) [9]

А также обеспечение его LogOn.


 
BiN ©   (2004-03-06 15:18) [10]

Makhanev A.S. ©   (05.03.04 18:39) [8]
Насчет GINA было бы корректнее упомянуть WlxDisplaySASNotice, вызываемую winlogon-ом из GINA в момент открытия сессии.
Как универсальный вариант, можно перехватывать все тот же LogonUserA(W)во всех открытых winlogon-ом модулях. Это можно осуществить внедрением в Winlogon, что позволит не перегружать машину, как в случае с  Winlogon Notification Packages.
Внедрение же в winlogon возможно при включении Debug-привилегий.


 
Makhanev A.S. ©   (2004-03-06 15:31) [11]

Пробуем WinLogon.
Всё в принципе устраивает, но есть одно НО:
я так понимаю, что указанная dll работает на рабочем столе WinLogon.
А сервис, который должен от нее получать нотификации - на раб. столе админа.
Короче, messages от dll не принимаются.

Где лыжи мазать или править руки?

Необходимо реализовать систему оповещения в реальном времени м/ду dll и сервисом.


 
BiN ©   (2004-03-06 15:33) [12]

прошу прощения за WlxDisplaySASNotice. Конечно же эта функция вызывается не во время открытия сессии, а наоборот - в начале процесса аутентификации. Здесь лучше подойдет WlxLoggedOnSAS или WlxActivateUserShell.


 
BiN ©   (2004-03-06 15:37) [13]

Makhanev A.S. ©   (06.03.04 15:31) [11]

А разве сервис, работающий с правами системы не имеет доступа к десктопу winlogon-a? И не лучше ли использовать MMF, а не оконные сообщения, которыми, как я понимаю, ты пользуешься


 
Cobalt ©   (2004-03-06 17:57) [14]

Помнится мне, что в разных сессиях ядрёные объекты - изолированы.


 
Makhanev A.S. ©   (2004-03-06 18:09) [15]

BiN ©   (06.03.04 15:37) [13]
оконные сообщения я заююзал, чтобы убедиться, что они недолетят:)
а в общем случае WM - вполне удобен для моих нужд.
Насчет MMF уже копаем.
Но пока пробуем ControlService.


 
BiN ©   (2004-03-06 19:04) [16]

Cobalt ©   (06.03.04 17:57) [14]
наверно, для этого и существуют  SECURITY_ATTRIBUTES


 
Gamlet ©   (2004-04-17 08:12) [17]

Мона просто обрабатывать WM_WTSESSION_CHANGE.
см.
http://www.delphiworld.narod.ru/base/get_xp_sessions_notify.html



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

Форум: "Система";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.034 c
14-1083600595
ИМХО
2004-05-03 20:09
2004.05.23
Уолл-стрит - ИМХО, очень хороший фильм о США


3-1083320283
Timon
2004-04-30 14:18
2004.05.23
Помогите избавиться от ошибки?


7-1082110154
AlexeyD
2004-04-16 14:09
2004.05.23
Как удалить или очистить каталог _RESTORE в корневом каталоге C:?


1-1083856663
Alek_1
2004-05-06 19:17
2004.05.23
OleContainer


14-1083696618
gn
2004-05-04 22:50
2004.05.23
А на чём ездят мастера, в смысле марка ну или на худой конец вид?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский