2009-12-16 7 views
8

He buscado en muchos lugares y solo encontré un reemplazo de GINA llamado pGINA pero está en C++ y no lo sé en absoluto.¿Un reemplazo de GINA en un lenguaje .NET?

¿Alguien conoce uno en C# o VB.NET?

(estoy escribiendo software para su uso en el trabajo para controlar lo que los empleados están haciendo)

+0

Ayudaría si le da una pista sobre qué es GINA. –

+1

¿Es esto GINA? http://msdn.microsoft.com/en-us/library/aa380543%28VS.85%29.aspx –

+3

Un acrónimo de computadora, GINA (mayúsculas) es la biblioteca de vínculos dinámicos de identificación gráfica y autenticación (DLL). El GINA es una DLL reemplazable cargada por el ejecutable de Winlogon. El GINA implementa la política de autenticación del modelo de inicio de sesión interactivo y se espera que realice todas las interacciones de identificación y autenticación del usuario. –

Respuesta

11

Hosting .NET en Winlogon (donde se cargan DLL de GINA) probablemente no es una idea-tan caliente podría causar todo tipo de conflictos si algo más decide hacer lo mismo, y si destruye winlogon, no estará llegando a ninguna parte con esa PC. Además, GINA ha sido reemplazado desde Vista con ICredentialProvider (ver here), por lo que su inversión se perderá tan pronto como se mueva a un sistema operativo más nuevo. Incluso allí, se aplica lo mismo: los proveedores de credenciales personalizados se cargan en Winlogon, por lo que probablemente no sea una buena idea utilizar .NET allí.

De todos modos, ambos están destinados a soportar módulos de autenticación personalizados, no "controlar lo que los empleados están haciendo". Existen otras formas de ejecutar software en los escritorios de inicio de sesión, si eso es lo que intenta hacer.

Dicho todo esto, si aún quiere probarlo, necesitará una DLL de shim no administrada, C++/CLI o algún hacking de IL (vea here) para exportar las funciones de GINA porque C# no puede exportar directamente las funciones de DLL . Una solución de C# administrada pura no es posible.

+0

Muchas gracias, no sabía eso sobre vista –

+0

Hmm ... Creo que en Windows Vista los "CP" se cargan en un proceso hijo especial de winlogon.exe: logonui.exe para el propósito particular de que "código personalizado" "no debería ser capaz de bloquear winlogon.exe (http://msdn.microsoft.com/en-us/magazine/cc163489.aspx). Sin embargo, aún estaría de acuerdo con tus retenciones. –

+0

Es cierto que el host de LogonUI aísla los CP incorrectos de WinLogon, pero no el uno del otro. Si se cargaran varios CP gestionados en el mismo host, la posibilidad de conflictos es bastante alta. IIRC, si LogonUI está "roto" por un CP incorrecto, todavía no puede iniciar sesión. – nitzmahone

2

Para ampliar puntos de eexcellent nitzmahone:

La sustitución completa GINA es realmente un no no-uso de código administrado. OTOH, es bastante posible escribir un GINA de reemplazo en C++ y hacer que llame al código .Net para hacer el trabajo pesado.

Hace algunos años utilicé esta técnica para reemplazar la pantalla CTRL + ALT + DEL con un lujoso servicio de noticias. Mi GINA personalizada era un proxy para GINA estándar. La mayoría de las veces pasa llamadas de forma transparente a la GINA estándar. La excepción fue que ejecutó el .exe para la aplicación .Net en lugar de mostrar la pantalla ALT + DEL + CTRL, luego esperó a que finalizara el .exe antes de mostrar la pantalla de inicio de sesión.

Con pesar, abandoné el proyecto cuando estaba claro que el trabajo no podía aplicarse directamente a Vista.