Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
5-1130274979
Anarki
2005-10-26 01:16
2006.04.23
Можно ли скреститьTreeView с Fields Editor


15-1143535479
Yanis
2006-03-28 12:44
2006.04.23
Кривоватость какая то...


15-1144171350
cleric
2006-04-04 21:22
2006.04.23
Эвольвента


3-1141126943
gamar
2006-02-28 14:42
2006.04.23
Добавление поля в runtime


15-1144081818
Mozart
2006-04-03 20:30
2006.04.23
А как на западе с лицензионным ПО (подумал я)....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский