5

我正在尝试创建一个新用户-> 设置密码并启用帐户。

早些时候我使用 1 个单个对象,但在查看了一些帖子后,我决定将“使用”用于 3 种不同的操作

        string strDisplayName = txtFirstName.Text + " " + txtLastName.Text;
        string strUser = txtLoginName.Text;

        string pw = "pass@123";


        using (var objADAM = new DirectoryEntry("LDAP://" + adlink + "/CN=Users,DC=SS,DC=COM", "ss\\luser", "pass@123", AuthenticationTypes.Secure))
        {


            const long ADS_OPTION_PASSWORD_PORTNUMBER = 6;
            const long ADS_OPTION_PASSWORD_METHOD = 7;

            const int ADS_PASSWORD_ENCODE_CLEAR = 1;
            string strPort = "389";
            int intPort = Int32.Parse(strPort);

            using (var objUser = objADAM.Children.Add("CN=" + strUser, "user"))
            {
                objUser.Properties["sAMAccountName"].Add(strUser);
                objUser.CommitChanges();
            }
        }

        using (var user = new DirectoryEntry("LDAP://" + adlink + "/CN=" + strUser + ",CN=Users,DC=SS,DC=COM", "ss\\rluser", "pass@123"))
        {
            user.Invoke("SetPassword", new object[] { "password" });
            user.CommitChanges();
        }



        using (var user = new DirectoryEntry("LDAP://" + adlink + "/CN=" + strUser + ",CN=Users,DC=SS,DC=COM", "ss\\rluser", "pass@123"))
        {

            //Enable account and change password on first logon flag
            user.Properties["userAccountControl"].Value = 0x200;
            user.Properties["pwdLastSet"].Value = 0;
            user.CommitChanges();

        }

我必须提到,我在域外,并试图连接到另一个域上的远程 AD 。然而,通过的凭证是ADMIN

用户创建顺利进行(在端口打开和 LDAP 连接出现一些小问题之后),但是在调用 invoke ->setpassword 时会出现问题。

错误是:“RPC 服务器不可用”,只是为了确保我的代码没有做错,我下载了一个 LDAP 管理工具并尝试重置现有用户的密码 -> 相同的错误

步骤 - 检查 RPC 服务正在运行 - 打开 RPC 端口 -135,等等等等..基本上每个端口都可以打开:|

任何帮助表示赞赏。

谢谢拉贾特

4

2 回答 2

1

例如:

            DirectoryEntry de = new DirectoryEntry();
            de.Path = "LDAP://dnsname.domain.com:389/OU=Companies;

Microsoft 建议使用 DNS 进行访问。如果您正在访问的机器连接到不同的域,则必须在“C:\Windows\System32\drivers\etc”目录下的 hosts 文件中将其指定为“ip dnsname”。

于 2019-08-06T11:27:49.597 回答
0

使用 adlink 是字符串域,因为 AD 方法 Invoke 使用域名:“abc.com”

于 2018-06-27T07:22:56.693 回答