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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.025 c
1-1084055739
Box
2004-05-09 02:35
2004.05.23
Компонент ListView


3-1083348601
Mister
2004-04-30 22:10
2004.05.23
MySQL+Delphi


7-1082190027
Sanek_metaller
2004-04-17 12:20
2004.05.23
Отклучение службы


1-1084129036
kas-t
2004-05-09 22:57
2004.05.23
Экономия ресурсов системы...


3-1083134458
Slavik_v
2004-04-28 10:40
2004.05.23
Некорректно копируется поле