C#调用Windows安全中心进行用户身份验证

发布时间 2023-07-14 23:36:40作者: 皮特胖胖

Chrome密码管理器,显示密码,会调用Windows安全中心验证用户身份,用户可以通过指纹、面孔、PIN、或者输入密码的方式验证,验证通过就显示密码,验证不通过就不显示。

C# 不太清楚如何实现这样的功能,如果有知道的大牛可以给个Demo。

以下为可能有用的资料:

https://learn.microsoft.com/en-us/windows/win32/api/wincred/nf-wincred-creduipromptforwindowscredentialsa

        [DllImport("credui.dll", EntryPoint = "CredUIPromptForWindowsCredentials", CharSet = CharSet.Unicode)]
        public static extern int CredUIPromptForWindowsCredentials(ref CREDUI_INFO pUiInfo, int dwAuthError, ref uint pulAuthPackage, IntPtr pvInAuthBuffer, uint ulInAuthBufferSize, out IntPtr ppvOutAuthBuffer, out uint pulOutAuthBufferSize, ref bool pfSave, int dwFlags);

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        public struct CREDUI_INFO
        {
            /// <summary>此结构的大小。</summary>
            public int cbSize;
            /// <summary>指定对话框的父窗口的句柄。 与父窗口相关的对话框是模式的。 如果此成员为 NULL,则桌面是对话框的父窗口。</summary>
            public IntPtr hwndParent;
            /// <summary>指向包含要显示在对话框中的简短消息的字符串的指针,此字符串的长度不应超过CREDUI_MAX_MESSAGE_LENGTH。</summary>
            public string pszMessageText;
            /// <summary>指向包含对话框标题的字符串的指针,此字符串的长度不应超过CREDUI_MAX_CAPTION_LENGTH。</summary>
            public string pszCaptionText;
            /// <summary>(忽略)要显示在对话框中的位图,如果此成员为NULL,则使用默认位图。位图大小限制为 320*60 像素。</summary>
            public IntPtr hbmBanner;
        }