【问题标题】:A GINA replacement in a .NET language?.NET 语言中的 GINA 替代品?
【发布时间】:2009-12-16 21:14:12
【问题描述】:

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

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

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

【问题讨论】:

  • 如果您能提供一些关于 GINA 是什么的提示,将会有所帮助。
  • 计算机首字母缩写词,GINA(全部大写)是图形识别和验证动态链接库 (DLL)。 GINA 是由 Winlogon 可执行文件加载的可替换 DLL。 GINA 实现交互式登录模型的身份验证策略,并有望执行所有识别和身份验证用户交互。
  • 在问问题之前,也许您应该考虑“如果恶意软件能够做到这一点会怎样?”。
  • 匿名,我看不出恶意软件不能这样做的任何原因,前提是它首先具有对您计算机的管理员访问权限。与非 .NET GINA 相同,您当然可以这样做。

标签: c# .net vb.net gina


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢,我对 vista 不了解
  • 嗯...我相信在 Windows Vista 上,“CP”被加载到 winlogon.exe 的特殊子进程中:logonui.exe 用于“自定义代码”不应该能够的特定目的崩溃 winlogon.exe (msdn.microsoft.com/en-us/magazine/cc163489.aspx)。尽管如此,我仍然同意你的保留。
  • 确实,LogonUI 主机将行为不端的 CP 与 WinLogon 隔离开来,但彼此之间不隔离。如果将多个托管 CP 加载到同一主机中,则发生冲突的可能性非常高。 IIRC,如果LogonUI被坏CP“破坏”了,你仍然无法登录。
【解决方案2】:

扩展 nitzmahone 的优点:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-02
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多