8

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

有人知道 C# 或 VB.NET 吗?

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

4

2 回答 2

11

在 Winlogon(加载 GINA dll 的地方)中托管 .NET 可能不是一个热门的想法 - 如果其他人决定做同样的事情,可能会导致各种冲突,并且如果你丢弃 winlogon,那么你将无济于事个人电脑。此外,从 Vista 开始,GINA 已被 ICredentialProvider 取代(请参见此处)——因此,一旦您迁移到更新的操作系统,您的投资就会丢失。即使在那里,同样的事情也适用:自定义凭据提供程序被加载到 Winlogon,因此在那里使用 .NET 可能不是一个好主意。

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

话虽如此,如果您仍想尝试它,您将需要一个非托管 shim DLL、C++/CLI 或一些 IL hacking(参见此处)来导出 GINA 函数,因为 C# 不能直接导出 DLL 函数。纯托管 C# 解决方案是不可能的。

于 2009-12-16T21:36:31.690 回答
2

扩展 nitzmahone 的优点:

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

几年前,我使用这种技术将 CTRL+ALT+DEL 屏幕替换为精美的新闻服务。我的自定义 GINA 是标准 GINA 的代理。大多数时候,它透明地将调用传递给标准 GINA。例外是它为 .Net 应用程序运行 .exe,而不是显示 ALT+DEL+CTRL 屏幕,然后等待 .exe 终止,然后再显示登录屏幕。

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

于 2010-02-03T09:44:09.713 回答