2009-12-16 10 views
8

Przeszukałem wiele miejsc i znalazłem tylko jeden zamiennik GINA o nazwie pGINA, ale jest w C++, którego w ogóle nie znam.Wymiana GINA w języku .NET?

Czy ktoś wie jeden w C# lub VB.NET?

(Piszę oprogramowanie do użytku w pracy, aby kontrolować, co pracownicy robią)

+0

Pomoże Ci, jeśli podpowiesz, czym jest GINA. –

+1

Czy to jest GINA? http://msdn.microsoft.com/en-us/library/aa380543%28VS.85%29.aspx –

+3

Akronim komputerowy, GINA (all caps) to graficzna biblioteka identyfikacji i uwierzytelniania (DLL). GINA jest wymienną biblioteką DLL ładowaną przez plik wykonywalny Winlogon. GINA implementuje politykę uwierzytelniania interaktywnego modelu logowania i oczekuje się, że wykona wszystkie interakcje użytkownika związane z identyfikacją i uwierzytelnianiem. –

Odpowiedz

11

Hosting .NET w Winlogon (gdzie DLL GINA zostały załadowane) prawdopodobnie nie jest taki gorący idea- może spowodować różnego rodzaju konfliktów, jeśli coś innego zdecyduje się zrobić to samo, a jeśli wyrzucisz winlogon, nigdzie nie dojdziesz do tego komputera. Ponadto, GINA została zastąpiona przez Vista z ICredentialProvider (patrz here) - więc Twoja inwestycja zostanie utracona, gdy tylko przejdziesz do nowszego systemu operacyjnego. Nawet tam, to samo dotyczy: niestandardowych dostawców poświadczeń są ładowane do Winlogon, więc prawdopodobnie nie jest to świetny pomysł, aby korzystać z .NET tam.

Bez względu na to, oba te elementy mają obsługiwać niestandardowe moduły uwierzytelniające, a nie "kontrolować, co robią pracownicy". Istnieją inne sposoby uruchamiania oprogramowania na komputerach logowania, jeśli to właśnie próbujesz zrobić.

Wszystko, co powiedzieliśmy, jeśli nadal chcesz go wypróbować, będziesz potrzebować niezarządzanego shim DLL, C++/CLI lub hakowania IL (zobacz here), aby wyeksportować funkcje GINA, ponieważ C# nie może bezpośrednio eksportować funkcji DLL . Czyste zarządzane rozwiązanie C# nie jest możliwe.

+0

Wielkie dzięki, nie wiedziałem o vista –

+0

Hmm ... Wierzę, że w systemie Windows Vista "CP" są ładowane do specjalnego procesu potomnego winlogon.exe: logonui.exe dla określonego celu, który "niestandardowy kod "nie powinno być w stanie awarię winlogon.exe (http://msdn.microsoft.com/en-us/magazine/cc163489.aspx). Niemniej jednak nadal zgadzam się z twoimi zastrzeżeniami. –

+0

To prawda, że ​​host LogonUI izoluje źle zachowujące się CP z WinLogon, ale nie od siebie nawzajem. Jeśli wiele zarządzanych CPs zostało załadowanych do tego samego hosta, potencjał konfliktów jest dość wysoki. IIRC, jeśli LogonUI jest "uszkodzony" przez nieprawidłowy CP, nadal nie możesz się zalogować. – nitzmahone

2

Aby rozwinąć na punkty eexcellent nitzmahone za:

Całkowicie zastępując GINA jest naprawdę nie, nie używając kodu zarządzanego. OTOH, jest całkiem możliwe, aby napisać GINĘ zastępczą w C++ i zlecić jej wykonanie kodu .Net.

Kilka lat temu użyłem tej techniki, aby zastąpić ekran CTRL + ALT + DEL fantazyjną usługą informacyjną. Moja niestandardowa GINA była proxy dla standardowego GINA. Przez większość czasu w sposób transparentny przekazywał połączenia do standardowego GINA. Wyjątkiem było to, że uruchomił plik .exe dla aplikacji .Net zamiast wyświetlać ekran ALT + DEL + CTRL, a następnie czekał na zakończenie .exe przed wyświetleniem ekranu logowania.

Z żalem porzuciłem projekt, gdy stało się jasne, że praca nie może być bezpośrednio zastosowana w systemie Vista.