Форум: "Система";
Текущий архив: 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.48 MB
Время: 0.036 c