我做了一点谷歌搜索,我遇到了这个充满希望的代码
System.DirectoryServices.AccountManagement.PrincipalContext pc = new System.DirectoryServices.AccountManagement.PrincipalContext(ContextType.Domain, "YOURDOMAIN")
// validate the credentials
bool validatedOnDomain = pc.ValidateCredentials(userName, tb.Text.ToString());
userName初始化为Windows登录名。它也是一个字符串 tb.Text.ToString()是用于输入密码的文本框
更新了代码并且它正常运行。谢谢大家
MSDN表示PrincipalContext可以使用两个参数
答案 0 :(得分:5)
尝试找出这段代码..这在我的项目中完美运作。
public bool ValidateUser(string varDomain, string varUserName, string varPwd)
{
Boolean isValidUser;
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, varDomain))
{
isValidUser = pc.ValidateCredentials(varUserName, varPwd);
}
return isValidUser;
}
答案 1 :(得分:3)
using语句中使用的类型必须可以隐式转换为'System.IDisposable'
表示您需要将代码更改为:
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");
// validate the credentials
bool validatedOnDomain = pc.ValidateCredentials(userName, tb.Text.ToString());
基本上它只是告诉您不能在PrincipalContext
语句中使用using
,因为PrincipalContext
没有实现名为IDisposable
的接口。
修改强>
正如marc_s
在下面指出的那样,您使用的PrincipalContext
不是正确的。它似乎存在于您自己的命名空间中。你应该使用System.DirectoryServices.AccountManagement
中的那个。