微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Windows应用程序中使用Windows身份validation?

如何在C#编写的Windows应用程序中使用Windows身份validation(本地计算机pipe理员用户)。

需要是每当用户打开我的Windows应用程序GUI,它应该authentication本地pipe理员凭据,即使用户以pipe理员身份login。

这是Windows冒充吗?

Windows机器上的网站自动login脚本?

在Windows窗体中注册MouseEnter / MouseLeave事件禁用控件?

如何编译使用VS2010的Windows x64位的Leptonica库?

Windows.h – 焦点input文本input时的通知

Turbo Pascal for Windows:将输出复制到剪贴板?

如果调用cudamalloc,简单的控制台程序将不会退出

如何在Python中创build一个alt + number全局热键?

为什么告诉我“命令未find”?

在Windows中抑制应用程序用户界面

NodeJS基本FileIO

您可以调用logonUser API方法来检查用户名密码

你可以在这里看到[DllImport] 。

如果您想要显示标准的用户名/密码提示,您可以调用CredUIPromptForCredentials API函数; 也请看这里

编辑

要检查用户是否是管理员,您可以调用CheckTokenMembership并检查用户是否在Administrators组中。

或者,您可以调用NetUserGetInfo级别1,并检查usri1_priv是否为USER_PRIV_ADMIN 。

您也可以使用WMI或DirectoryServices。

一种方法是,如果用户将以标准帐户运行,如果将清单文件设置为以管理员身份运行,则会始终提示输入管理员用户名密码

您可能要查找的是logonUser Win32 API来验证身份验证信息:

[DllImport("advapi32.dll",SetLastError=true)] public static extern bool logonUser( string lpszUsername,string lpszDomain,string lpszPassword,int dwlogonType,int dwlogonProvider,out IntPtr phToken );

可能有点迟,但要实现窗口身份验证功能的C#桌面应用程序,有两个步骤完成以下步骤。

第1步:获取当前登录用户详细信息:

这非常简单。 我们可以通过使用System.Security.Principal命名空间的WindowsIdentity类来实现。 这个类提供了一个静态方法getCurrent() ,它返回一个WindowsIdentity的对象。 贝娄是您可以用来获取当前登录用户详细信息的代码

第2步:验证用户提供的Windows凭据:

需要从用户请求域名,用户名密码将这些值传递给互操作服务。 与上面相比,这很复杂,因为我们需要使用IntropServices调用Windows API。 为了完成这个,我们需要添加一个extern函数声明,然后调用函数。 以下代码将帮助您更好地理解这一点。

bool issuccess = false; string username = GetloggedinUserName(); if (username.ToLowerInvariant().Contains(txtUserName.Text.Trim().ToLowerInvariant()) && username.ToLowerInvariant().Contains(txtDomain.Text.Trim().ToLowerInvariant())) { issuccess = IsValidateCredentials(txtUserName.Text.Trim(),txtPwd.Text.Trim(),txtDomain.Text.Trim()); } if (issuccess) MessageBox.Show("Successfuly Login !!!"); else MessageBox.Show("User Name / Password / Domain is invalid !!!");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐