Jan*_*ngo 7 c# windows winforms
如何在用C#编写的Windows应用程序中使用Windows身份验证(本地机器管理员用户).
需要的是每当用户打开我的Windows应用程序GUI时,即使用户以管理员身份登录,它也应该验证本地管理员凭据.
这个窗户是假冒吗?
您可以调用LogonUserAPI方法来检查用户名和密码.
你可以在[DllImport] 这里看到.
如果要显示标准用户名/密码提示,可以调用CredUIPromptForCredentials API函数; 另见这里
要检查用户是否是管理员,您可以呼叫CheckTokenMembership并检查用户是否在该Administrators组中.
另外,您也可以拨打NetUserGetInfo1级,并检查是否usri1_priv是USER_PRIV_ADMIN.
您还可以使用WMI或DirectoryServices.
可能有点晚了,但要实现C# 桌面应用程序的窗口身份验证功能 ,需要完成以下两个步骤。
步骤1:获取当前登录的用户详细信息:
这非常简单。我们可以通过使用命名空间的 WindowsIdentity 类来实现这一点System.Security.Principal。此类提供了一个静态方法 ,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 !!!");
Run Code Online (Sandbox Code Playgroud)