2

我做了一点谷歌搜索,我遇到了这个有前途的代码

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 可以使用两个参数

4

2 回答 2

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;

    }
于 2012-12-31T14:55:41.573 回答
3

在 using 语句中使用的类型必须可隐式转换为“System.IDisposable”

意味着您需要将代码更改为:

PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");

// validate the credentials 
bool validatedOnDomain = pc.ValidateCredentials(userName, tb.Text.ToString());

基本上它只是告诉你不能PrincipalContextusing语句中使用 a ,因为PrincipalContext它没有实现名为IDisposable.

编辑 如下marc_s所述,PrincipalContext您使用的不是正确的。它似乎生活在您自己的命名空间中。你应该从System.DirectoryServices.AccountManagement.

于 2012-02-15T15:26:17.227 回答