отловить логин, блокировку и разблокировку станции
От: Снежок Россия  
Дата: 19.11.01 07:56
Оценка:
Нужно отловить события:
-пользователь логинится
-пользователь блокирует станцию (кроме как ловить CTRL+ALT+DEL станция блокируется программно ф-ей LockWorkStation)
-пользователь разблокирует станцию (кроме как ловить CTRL+ALT+DEL)

Какие сообщения при этом посылает система?
Или каким способом это еще можно сделать?
Re: отловить логин, блокировку и разблокировку станции
От: TSS Россия http://www.sdl.ru
Дата: 28.11.01 13:48
Оценка:
Здравствуйте Снежок, Вы писали:

С>Нужно отловить события:

С>-пользователь логинится
С>-пользователь блокирует станцию (кроме как ловить CTRL+ALT+DEL станция блокируется программно ф-ей LockWorkStation)
С>-пользователь разблокирует станцию (кроме как ловить CTRL+ALT+DEL)

С>Какие сообщения при этом посылает система?

С>Или каким способом это еще можно сделать?

Нужно написать свою GINA.DLL, которая бы и ловила все WLX_xxx — нотификациооные сообщения. Т.е. она должна будет работать как "прослойка" между пользователем и MSGINA.DLL
Signed, [TSS] /SDL/
Re: отловить логин, блокировку и разблокировку станции
От: DNS Россия  
Дата: 28.11.01 14:34
Оценка:
Здравствуйте Снежок, Вы писали:

С>Какие сообщения при этом посылает система?

С>Или каким способом это еще можно сделать?

Не надо писать GINA.dll надо написать Winlogon notification package.
См. MSDN.

Успехов.
Д.Н.С.
Re[2]: отловить логин, блокировку и разблокировку станции
От: Аноним  
Дата: 28.11.01 14:52
Оценка:
Здравствуйте DNS, Вы писали:

DNS>Здравствуйте Снежок, Вы писали:


С>>Какие сообщения при этом посылает система?

С>>Или каким способом это еще можно сделать?

DNS>Не надо писать GINA.dll надо написать Winlogon notification package.

DNS>См. MSDN.

Подробнее расскажите как зарегистрировать Winlogon notification package у меня не получилось.
Может в длл что то напутал. Можно ли Winlogon notification package на Делфи написать?
Re[3]: отловить логин, блокировку и разблокировку станции
От: DNS Россия  
Дата: 28.11.01 15:02
Оценка:
Здравствуйте Аноним, Вы писали:

А>Подробнее расскажите как зарегистрировать Winlogon notification package у меня не получилось.

А>Может в длл что то напутал. Можно ли Winlogon notification package на Делфи написать?

Да я не писал WNP на Delphi. А какие возникли проблемы при регистрации?
У меня тоже что-то было, но не помню, решилось быстро.

вот код с саморегистрацией

// notpack.cpp : Implementation of DLL Exports.

#include "stdafx.h"
#include "resource.h"
#include "notpack.h"
#include "winwlx.h"
#include "atlapp.h"
#include "atlmisc.h"
#include "RegProfile.h"

CComModule _Module;

BEGIN_OBJECT_MAP(ObjectMap)
END_OBJECT_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLL Entry Point

extern "C"
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
    if (dwReason == DLL_PROCESS_ATTACH)
    {
        _Module.Init(ObjectMap, hInstance, &LIBID_NOTPACKLib);
        DisableThreadLibraryCalls(hInstance);
    }
    else if (dwReason == DLL_PROCESS_DETACH)
        _Module.Term();
    return TRUE;    // ok
}

STDAPI DllRegisterServer(void)
{
    // registers object, typelib and all interfaces in typelib
        CRegProfile prof;
        prof.SetAppName(_T("Notify"));
        prof.SetRegistryKey(_T("Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\"));
        prof.WriteProfileInt(_T("notpack"),_T("Impersonate"),0);
        prof.WriteProfileInt(_T("notpack"),_T("Asynchronous"),0);
        prof.WriteProfileString(_T("notpack"),_T("DllName"),_T("notpack.dll"),REG_EXPAND_SZ);
        prof.WriteProfileString(_T("notpack"),_T("Lock"),_T("WLEventLock"),REG_SZ);
    return S_OK;
}

void WLEventLock(PWLX_NOTIFICATION_INFO pInfo)
{
    MessageBox(NULL,_T("WSLocked"),_T("Title"),MB_OK|MB_ICONERROR);
    ATLTRACE(_T("Trace to here \r"));
}



CRegProfile не буду пихать, там и так всё ясно.

Успехов!
Д.Н.С.
Re[3]: отловить логин, блокировку и разблокировку станции
От: TSS Россия http://www.sdl.ru
Дата: 28.11.01 15:07
Оценка:
Здравствуйте Аноним, Вы писали:

А>Подробнее расскажите как зарегистрировать Winlogon notification package у меня не получилось.

А>Может в длл что то напутал. Можно ли Winlogon notification package на Делфи написать?

На чем писать -- без разницы, факт тот, что тебе нужно написать .DLL, экспортирующую следующие функции:
    WlxNegotiate
    WlxInitialize
    WlxDisplaySASNotice
    WlxLoggedOutSAS
    WlxActivateUserShell
    WlxLoggedOnSAS
    WlxDisplayLockedNotice
    WlxWkstaLockedSAS
    WlxIsLockOk
    WlxIsLogoffOk
    WlxLogoff
    WlxShutdown
    WlxScreenSaverNotify
    WlxStartApplication

Описания и прототипы функций см. на MSDN.

Каждая функция, которую тебе нужно реализовать, будет по сути проксёй между MSGINA.DLL (или другой, см. ниже) и вызывающимим приложениями (например WinLogon)

Далее, в обработчики WlxLoggedOnSAS, WlxWkstaLockedSAS нужно встроить требуемый код для отлавливания событий.
Вот, в принципе и все.

А, забыл. Имя оригинальной GINA (той самой, которую тебе нужно вызывать из прокси-функций) -- MSGINA.DLL
Signed, [TSS] /SDL/
Re[4]: отловить логин, блокировку и разблокировку станции
От: DNS Россия  
Дата: 28.11.01 15:15
Оценка:
Здравствуйте TSS, Вы писали:

TSS>Здравствуйте Аноним, Вы писали:


А>>Подробнее расскажите как зарегистрировать Winlogon notification package у меня не получилось.

А>>Может в длл что то напутал. Можно ли Winlogon notification package на Делфи написать?

TSS>На чем писать -- без разницы, факт тот, что тебе нужно написать .DLL, экспортирующую следующие функции:

TSS>
TSS>    WlxNegotiate
TSS>    WlxInitialize
TSS>    WlxDisplaySASNotice
TSS>    WlxLoggedOutSAS
TSS>    WlxActivateUserShell
TSS>    WlxLoggedOnSAS
TSS>    WlxDisplayLockedNotice
TSS>    WlxWkstaLockedSAS
TSS>    WlxIsLockOk
TSS>    WlxIsLogoffOk
TSS>    WlxLogoff
TSS>    WlxShutdown
TSS>    WlxScreenSaverNotify
TSS>    WlxStartApplication
TSS>

TSS>Описания и прототипы функций см. на MSDN.

TSS>Каждая функция, которую тебе нужно реализовать, будет по сути проксёй между MSGINA.DLL (или другой, см. ниже) и вызывающимим приложениями (например WinLogon)


TSS>Далее, в обработчики WlxLoggedOnSAS, WlxWkstaLockedSAS нужно встроить требуемый код для отлавливания событий.

TSS>Вот, в принципе и все.

TSS>А, забыл. Имя оригинальной GINA (той самой, которую тебе нужно вызывать из прокси-функций) -- MSGINA.DLL



Совершенно без разницы как будут называться функции — что в реестре напишешь, то winlogon и будет вызывать. И не надо вызывать никаких msgina.dll из функций. Этож нотификация, а не обработка.
Д.Н.С.
Re[5]: отловить логин, блокировку и разблокировку станции
От: TSS Россия http://www.sdl.ru
Дата: 28.11.01 15:20
Оценка:
Здравствуйте DNS, Вы писали:

[skipped]

TSS>>А, забыл. Имя оригинальной GINA (той самой, которую тебе нужно вызывать из прокси-функций) -- MSGINA.DLL


DNS>Совершенно без разницы как будут называться функции — что в реестре напишешь, то winlogon и будет вызывать. И не надо вызывать никаких msgina.dll из функций. Этож нотификация, а не обработка.


Тот путь, который я "указал" будет работать на всех NTюхах, а не только под винтукеем.
--- cut из Platfrom SDK: Security: Winlogon Notification Packages ---
Winlogon notification packages require Microsoft® Windows® 2000.
--- cut ---
Signed, [TSS] /SDL/
Re[6]: отловить логин, блокировку и разблокировку станции
От: DNS Россия  
Дата: 28.11.01 15:25
Оценка:
Здравствуйте TSS, Вы писали:

TSS>Здравствуйте DNS, Вы писали:


TSS>[skipped]


TSS>>>А, забыл. Имя оригинальной GINA (той самой, которую тебе нужно вызывать из прокси-функций) -- MSGINA.DLL


DNS>>Совершенно без разницы как будут называться функции — что в реестре напишешь, то winlogon и будет вызывать. И не надо вызывать никаких msgina.dll из функций. Этож нотификация, а не обработка.


TSS>Тот путь, который я "указал" будет работать на всех NTюхах, а не только под винтукеем.

TSS>--- cut из Platfrom SDK: Security: Winlogon Notification Packages ---
TSS> Winlogon notification packages require Microsoft® Windows® 2000.
TSS>--- cut ---

Согласен, но мы-то обсуждали реализацию WNP, а не его платформенную зависимость, не так ли?
Д.Н.С.
Re[7]: отловить логин, блокировку и разблокировку станции
От: TSS Россия http://www.sdl.ru
Дата: 28.11.01 15:27
Оценка:
Здравствуйте DNS, Вы писали:

DNS>Согласен, но мы-то обсуждали реализацию WNP, а не его платформенную зависимость, не так ли?


См. оригинальное сообщение в котором не было ни слова об Winlogon Notification Packages, но в котором была поставлена четкая задача: отловить...
Signed, [TSS] /SDL/
Re[8]: отловить логин, блокировку и разблокировку станции
От: DNS Россия  
Дата: 28.11.01 15:40
Оценка:
Здравствуйте TSS, Вы писали:

TSS>Здравствуйте DNS, Вы писали:


DNS>>Согласен, но мы-то обсуждали реализацию WNP, а не его платформенную зависимость, не так ли?


TSS>См. оригинальное сообщение в котором не было ни слова об Winlogon Notification Packages, но в котором была поставлена четкая задача: отловить...


Попросили рассказать поподробнее про WNP — я и рассказал.
А продвигать gina надо было в своей нитке
Д.Н.С.
Re[9]: отловить логин, блокировку и разблокировку станции
От: TSS Россия http://www.sdl.ru
Дата: 28.11.01 15:45
Оценка:
Здравствуйте DNS, Вы писали:

DNS>Попросили рассказать поподробнее про WNP — я и рассказал.

DNS>А продвигать gina надо было в своей нитке

Упс, сорри...
Signed, [TSS] /SDL/
Re[10]: отловить логин, блокировку и разблокировку станции
От: IT Россия linq2db.com
Дата: 28.11.01 15:57
Оценка: 2 (1)
Здравствуйте TSS, Вы писали:

Может всё таки стоит вот это почитать http://rsdn.ru/?article/?baseserv/extgina.xml
Автор(ы): Алексей Остапенко
Дата: 12.10.2001
В статье описывается возможная схема написания расширений стандартной реализации сервиса GINA
(Graphical Identification and Authentication) MSGINA.Dll. Приводится пример простейшего расширения, блокирующего
запуск скринсейвера, если запущено приложение из определенного списка.
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.