如何在C# WPF应用程序中使用标准的内置Windows登录工具在执行请求的操作之前验证本地用户?我还被限制为.NET Framework 4.8。我希望避免“自己滚动”,以确保使用用户熟悉的标准工具,并消除凭据信息泄漏的任何风险,甚至是潜在的网络钓鱼的最小建议。我见过其他用户应用程序这样做,例如,Windows Hello PIN。非常感谢您的建议/帮助。
yfwxisqw1#
您可以使用Windows API LogonUser函数。
LogonUser
[DllImport("advapi32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool LogonUser( [MarshalAs(UnmanagedType.LPStr)] string pszUserName, [MarshalAs(UnmanagedType.LPStr)] string pszDomain, [MarshalAs(UnmanagedType.LPStr)] string pszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("kernel32.dll")] private static extern bool CloseHandle(IntPtr hObject); public static void Main(string[] args) { var domain = "..."; var user = "..."; var pwd = "..."; var token = new IntPtr(); var success = false; try { success = LogonUser(user, domain, pwd, 2/*LOGON32_LOGON_INTERACTIVE*/, 0, ref token); } finally { CloseHandle(token); } }
根据您的要求,您可能需要使用CredUIPromptForCredentials。
CredUIPromptForCredentials
1条答案
按热度按时间yfwxisqw1#
您可以使用Windows API
LogonUser
函数。根据您的要求,您可能需要使用
CredUIPromptForCredentials
。