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

Вниз

Проблема с MsGina.dll   Найти похожие ветки 

 
dreamse   (2006-02-03 08:32) [0]

Пишу обертку к Msgina.dll для безопасности.
Решил сделать прилоение , т.е все формы , управление и пр размещались в своей реализации Gina.dll

Проблема вот в чём :

После загрузки библиотеки и windows невозможно показать форму приложения на экране пользоватля. Происходит это потому что winlogin создаёт при загрузки 3 раб стола ( winlogin , Default и Screnserver )

Все окна которые может создавать Gina.dll ( регистрация пользователя в windows , диалоговое окно по Ctrl + Alt + del , и блокировка системы ) происзодят на раб столе winlogon т.е доступа к этим окнам получить пользователь не может :(

Есть ли какое нибудь решение каким именно образом позволить пользователю взаимодействовать с окнами из Gina.dll ?

( Разделять приложение на 2 exe не хочеться , так как поставлена задача организовать проложение в своей реализации Gina.dll )

Есть варианты ?


 
kaZaNoVa ©   (2006-02-03 10:18) [1]

выводить сообщения на декстопе юзера .. (как это умеет делать MessageBoxEx (MessageBoxEx(0,"Test","Fantastika !!!", MB_DEFAULT_DESKTOP_ONLY, 0);   ;

или можно подгружаться к запущенным от имени пользователя программам  (например Explorer) и от их имени уже делать ....


 
dreamse   (2006-02-03 10:32) [2]

> kaZaNoVa ©   (03.02.06 10:18) [1]

Проблема в том чтобы выводить несообщения а формы ... :(


 
Игорь Шевченко ©   (2006-02-03 10:57) [3]


> Есть ли какое нибудь решение каким именно образом позволить
> пользователю взаимодействовать с окнами из Gina.dll ?


Какой пользователь имеется в виду ? На момент работы gina пользователя еще нет, вроде ?


 
dreamse   (2006-02-03 12:19) [4]

> Игорь Шевченко ©   (03.02.06 10:57) [3]

Обясню проще :

Есть приложение ( клиент - сервер ) одна часть приложения которым управляет администратор удалёно разрабатываеться в виде надстройки над MsGina.dll

Смысл в том чтобы сделать полноценое приложение для взаимодействием с пользователем ( окна ввода пароля , регистрация в системе ( не в windows а в своей системе , сетевой )  , настройка программы , иконка в трее ( например иконка тоже не появляеться так как окно программы создаёться на рабочем столе winlogon )

Есть юнит который должен по идее переключать приложение ( в данном случае надстройку над gina.dll ) на экран пользователя :


unit ServiceDesktop;

interface

function InitServiceDesktop: boolean;
procedure DoneServiceDeskTop;

implementation

uses Windows, SysUtils;

const
 DefaultWindowStation = "WinSta0";
 DefaultDesktop       = "Default";
var
 hwinstaSave: HWINSTA;
 hdeskSave: HDESK;
 hwinstaUser: HWINSTA;
 hdeskUser: HDESK;

function InitServiceDesktop: boolean;
var
 dwThreadId: DWORD;
begin
 dwThreadId := GetCurrentThreadID;
 // Ensure connection to service window station and desktop, and
 // save their handles.
 hwinstaSave := GetProcessWindowStation;
 hdeskSave   := GetThreadDesktop(dwThreadId);

 hwinstaUser := OpenWindowStation(DefaultWindowStation, FALSE, MAXIMUM_ALLOWED);
 if hwinstaUser = 0 then
 begin
   OutputDebugString(PChar("OpenWindowStation failed" +  SysErrorMessage(GetLastError)));
   Result := false;
   exit;
 end;

 if not SetProcessWindowStation(hwinstaUser)  then
 begin
   OutputDebugString("SetProcessWindowStation failed");
   Result := false;
   exit;
 end;

 hdeskUser := OpenDesktop(DefaultDesktop, 0, FALSE, MAXIMUM_ALLOWED);
 if hdeskUser = 0 then
 begin
   OutputDebugString("OpenDesktop failed");
   SetProcessWindowStation(hwinstaSave);
   CloseWindowStation(hwinstaUser);
   Result := false;
   exit;
 end;
 Result := SetThreadDesktop(hdeskUser);
 if not Result then
   OutputDebugString(PChar("SetThreadDesktop" + SysErrorMessage(GetLastError)));
end;

procedure DoneServiceDeskTop;
begin
 // Restore window station and desktop.
 SetThreadDesktop(hdeskSave);
 SetProcessWindowStation(hwinstaSave);
 if hwinstaUser <> 0 then
   CloseWindowStation(hwinstaUser);
 if hdeskUser <> 0 then
   CloseDesktop(hdeskUser);
end;

initialization
 InitServiceDesktop; // Активируем
finalization
 DoneServiceDesktop; // Деактивируем

 
end.


но толку от этого никакого , код не хочет выполняться и возращает постоянно False


 
dreamse   (2006-02-03 12:25) [5]

Смысл приложения состоит вот в чём :

Нужно обеспечить максимальную безопасность в windows ( авторизация в системе по магнитным карточкам , отпечаткам пальцев и пр. Т.е все окна windows регистрации пользователей , Ctrl+alt+del нужно заменять на свои ) тут же управление с сервера , удалёное администрирование , и что самое важное взаимодействие с пользователем, блокировка компьютера и пр. )

Разделять программу на несколько составляющих ( отдельно безопасность , отдельно управление , отдельно интерфейс ) не желателен, так как сам видел систему работающую по такому же принципу ( т.е в одной библиотеке все функции )


 
Игорь Шевченко ©   (2006-02-03 12:58) [6]

dreamse   (03.02.06 12:25) [5]


> Нужно обеспечить максимальную безопасность в windows ( авторизация
> в системе по магнитным карточкам , отпечаткам пальцев и
> пр.


Этим gina как раз и занимается.


> тут же управление с сервера , удалёное администрирование


А этим - нет. Может, не стоит нагружать Winlogon несвойственными ему функциями ?


 
dreamse   (2006-02-03 13:20) [7]

> Игорь Шевченко ©   (03.02.06 12:58) [6]
> Этим gina как раз и занимается.

Знаю , по этому и работаю именно с ней

> А этим - нет. Может, не стоит нагружать Winlogon несвойственными ему функциями ?

Думаю всё таки придёться разделять проложение не составляющие :

1) Mygina.dll - своя обёртка на функции безопасности
2) Proga.exe - Сервис , администрирование

Mygina.dll <> Proga.exe - обмениваються сообщениями для синхранизации и управления...

Вопрос : как лучше сделать обмен сообщениями между приложениями выполдняющимися на одной машине ?


 
Игорь Шевченко ©   (2006-02-03 13:56) [8]


> Вопрос : как лучше сделать обмен сообщениями между приложениями
> выполдняющимися на одной машине ?


NamedPipes ?


> Mygina.dll <> Proga.exe - обмениваються сообщениями для
> синхранизации и управления...


Этот момент я не совсем понимаю.

GINA - это обычная библиотека, загружается и работает с процессом WinLogon, я вижу причин, зачем какому-то приложению взаимодействовать с WinLogon, главная задача которого - пустить пользователя в систему.


 
dreamse   (2006-02-03 14:21) [9]

> Игорь Шевченко ©   (03.02.06 13:56) [8]

> GINA - это обычная библиотека, загружается и работает с процессом WinLogon, я вижу причин, зачем какому-то приложению взаимодействовать с WinLogon, главная задача которого - пустить пользователя в систему.

Так же с помощью Gina.dll можно блокировать - разблокировать компьютер , менять пароль текущему пользвоателю и пр. Т.е возможностей много.

Спасибо за помощь.


 
Игорь Шевченко ©   (2006-02-03 14:26) [10]


> Так же с помощью Gina.dll можно блокировать - разблокировать
> компьютер , менять пароль текущему пользвоателю


Не с помощью GINA, а с помощью Winlogon. Это же разные вещи.



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

Текущий архив: 2006.04.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.065 c
15-1144171350
cleric
2006-04-04 21:22
2006.04.23
Эвольвента


3-1140955588
ViktorZ
2006-02-26 15:06
2006.04.23
Invalid Floating Point


2-1144526652
Volf_555
2006-04-09 00:04
2006.04.23
Как из DLL выгрузить самого себя?


15-1143915613
Кручен-Верчен
2006-04-01 22:20
2006.04.23
Мне просто страшно подумать, что с моим ником станет!?


3-1140959607
stone
2006-02-26 16:13
2006.04.23
Удаление из DBF