0

DUPLICATE :使用 GINA 自定义登录方法


大家好,

我知道在 GINA 中找到大师并不容易,但我的问题最接近进程间通信(IPC),我在非托管 C++ 中编写了我的自定义 GINA,我将它包括一个检查指纹有效性的方法,供用户尝试登录时,该函数会调用c#编写的正在运行的系统windows服务中的一些方法,代码如下:

在 GINA 中,非托管 c++

if(Fingerprint.Validate(userName,finerprintTemplate)
{
    //perform login
}

在 Windows 服务中,C#

public class Fingerprint
{
   public static bool Validate(string userName, byte[] finerprintTemplate)
   {
      //Preform Some code to validate fingerprintTemplate with userName
      //and retuen result
   }
}

有谁知道如何在 GINA 和 windows 服务之间进行这种通信,或者只是在 c++ 编写的服务和 C# 编写的服务之间进行通信。

谢谢

4

1 回答 1

0

与服务(或大多数可能需要跨越会话/桌面边界的 IPC)进行通信的规范方法是命名管道。您也可以使用邮槽,但您必须处理重复问题,因为邮槽消息会在所有已安装的协议中被复制,因此您需要某种标记系统……有点混乱。

请参阅 CreateNamedPipe 的文档并从那里着手。我已经使用管道在 C++ 和 C# 之间进行了交谈:互操作有点混乱(二进制消息),但它是可行的。这里有一些 C# 管道的示例代码(来自双方)。

为特定服务使用管道来服务通信问题的好处是,如果需要,您可以稍后扩展设计以支持 UI。

于 2009-02-07T15:30:35.737 回答