![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сервис [D6, Win2k, WinXP]
Darkwin © (2003-02-12 18:48:00)Как в своём сервисе можно понять, что был выполнен выход из системы, а за тем вход, или смена пользователя?
Набережных С. (2003-02-14 17:34:00) [1]Получать SID не обязательно, достаточно проверить требуемый под него размер буфера. Что-то типа этого:
Sz: DWORD;
hWSta: THandle;
Sz:=0;
hWSta:=OpenWindowStation("WinSta0",false,WINSTA_READATTRIBUTES);
if GetUserObjectInformation(hWSta,UOI_USER_SID,nil,0,Sz) then
// интерактивного юзера нет
else if GetLastError = ERROR_INSUFFICIENT_BUFFER then
// интерактивный юзер есть
else - что-то не так
CloseWindowStation(hWSta);
Darkwin (2003-02-14 12:54:00) [2]
> Набережных С. (12.02.03 23:45)
Спасибо за подробное объяснение.
А как узнать этот SID?
Набережных С. (2003-02-14 09:56:00) [3]>Овчинников Денис
Не важно.
Овчинников Денис (2003-02-14 09:50:00) [4]>Набережных С
А если приложение не консольного типа?
Овчинников Денис (2003-02-14 09:49:00) [5]>Diamond Cat
Под NT/Win2k это сообщение не поддерживается (так написано в MSDN)
Набережных С. (2003-02-14 08:31:00) [6]>Diamond Cat ©
Понятно. Март приближается...
Набережных С. (2003-02-13 05:58:00) [7]>Diamond Cat © (13.02.03 00:39)
Ты о чем?
Diamond Cat (2003-02-13 00:39:00) [8]сообщение WM_USERCHANGED посылается всем окнам при смене юзера
Набережных С. (2003-02-12 23:45:00) [9]Функцией SetConsoleCtrlHandler регистрируешь функцию обратного вызова типа
function CtrlHandler(CtrlCode: DWord): bool; stdcall;
При закрытии сессии она будет вызвана с
CtrlCode = CTRL_LOGOFF_EVENT.
Причем дважды - перед самым закрытием и сразу после. Есть ли интерактивный юзер в текущий момент можно узнать по, например, длине SID юзера интерактивной станции.