用.NET语言替换GINA?

时间:2009-12-16 21:14:12

标签: c# .net vb.net gina

我搜索了很多地方,我发现只有一个名为pGINA的GINA替代品,但它是用C ++编写的,我根本不知道。

有人知道C#或VB.NET中的一个吗?

(我正在编写用于工作的软件来控制员工在做什么)

2 个答案:

答案 0 :(得分:11)

在Winlogon中托管.NET(GINA dll加载的地方)可能不是一个好主意 - 如果其他东西决定做同样的事情会导致各种冲突,如果你丢弃winlogon,你就不会得到任何有PC的地方。此外,GINA已经被ICredentialProvider替换为Vista(参见here) - 所以一旦你转向更新的操作系统,你的投资就会丢失。即使在那里,同样的事情也适用:自定义凭证提供程序被加载到Winlogon中,所以在那里使用.NET可能不是一个好主意。

无论如何,这两者都旨在支持自定义身份验证模块,而不是“控制员工正在做什么”。如果您正在尝试这样做,还有其他方法可以在登录桌面上运行软件。

所有这一切,如果您仍想尝试它,您将需要一个非托管的填充程序DLL,C ++ / CLI或一些IL黑客(请参阅here)来导出GINA函数,因为C#不能直接导出DLL函数。无法实现纯粹的托管C#解决方案。

答案 1 :(得分:2)

扩展nitzmahone的优点:

完全替换GINA实际上是使用托管代码的禁忌。 OTOH,很有可能用C ++编写替代GINA并让它调用.Net代码来完成繁重的工作。

几年前,我使用这种技术用一个花哨的新闻服务取代了CTRL + ALT + DEL屏幕。我的自定义GINA是标准GINA的代理。大多数情况下它透明地传递给标准GINA。例外情况是,它运行.Net应用程序的.exe而不是显示ALT + DEL + CTRL屏幕,然后在显示登录屏幕之前等待.exe终止。

遗憾的是,当很明显这项工作无法直接应用于Vista时,我放弃了这个项目。