创建用户
若要在Active Directory 域服务中创建用户,请在要放置用户的域的域容器中创建用户对象。 用户可以在域的根目录、组织单位或容器中创建用户。
创建用户对象时,还必须设置下表中列出的属性,将对象设置为由Active Directory 域服务和Windows 安全系统识别的法律用户。
Attribute | 说明 |
---|---|
快递 之 家 | 指定目录中用户对象的名称。 这是对象的相对可分辨名称(RDN)。 |
sAMAccountName | 指定一个字符串,该字符串是用于支持以前版本的 Windows 中的客户端和服务器的名称。 sAMAccountName 应小于 20 个字符,以支持以前版本的 Windows 中的客户端。 sAMAccountName 在域中的所有安全主体对象中必须是唯一的。 应对域执行查询,以验证 sAMAccountName 是否在域中是唯一的。 sAMAccountName 是一个可选属性。 如果未指定任何值,服务器将创建随机 sAMAccountName 值。 |
还可以设置其他属性。 如果未在创建时显式设置这些属性,则使用以下用户属性设置默认值。
Attribute | 说明 |
---|---|
accountExpires | 指定帐户何时过期。 默认值为 TIMEQ_FOREVER,指示帐户永远不会过期。 |
nTSecurityDescriptor | 基于特定规则创建安全描述符。 有关详细信息,请参阅 如何在新目录对象上设置安全描述符。 |
objectCategory | 指定用户类别。 默认值为“Person”。 |
name | 指定用户名。 默认值为 cn 设置的值。 |
pwdLastSet | 指定用户上次设置密码时间。 默认值为零,指示用户在下次登录时必须更改密码。 |
userAccountControl | 包含用于确定用户的多个登录和帐户功能的值。 默认情况下,设置了以下标志:
|
memberOf | 指定用户是其直接成员的组或组。 默认值为“域用户”。 |
用户是通过绑定到所需容器,然后使用下列方法之一创建的。 在用户提交到服务器之前,必须设置 cn 和 sAMAccountName 属性。
方法 | 说明 |
---|---|
IADsContainer.Create | cn 属性取自 bstrRelativeName 参数。 必须通过调用 IADs.SetInfo 提交新用户,否则不会创建该对象。 有关详细信息,请参阅 用于创建用户的示例代码。 |
IDirectoryObject::CreateDSObject | cn 属性取自 pszRDNName 参数。 调用 CreateDSObject 时,将提交新用户。 有关详细信息,请参阅 用于创建用户的示例代码。 |
DirectoryEntries.Add | cn 属性取自名称参数。 必须通过调用 DirectoryEntry.CommitChanges 提交新用户对象,否则不会创建该对象。 有关详细信息,请参阅 “添加目录对象”。 |
必须先将新用户提交到服务器,然后才能修改 cn 和 sAMAccountName 以外的任何属性。 这是因为在提交用户之前,用户帐户实际上不存在。 如果为服务器上不存在的对象检索或修改属性,将发生错误。 这包括调用 IADsUser.SetPassword 方法。 例如,使用 IADsContainer.Create 创建用户时,将遵循以下序列:
- 调用 IADsContainer.Create,以使用指定的 cn 在本地缓存中创建用户。
- 使用 IADs.Put 方法将 sAMAccountName 属性设置为所需的值。
- 现在修改其他属性,例如 userAccountControl。 此限制也适用于 ADSI 属性,例如 IADsUser.AccountDisabled 和 IADsUser.SetPassword 等方法。
- 调用 IADs.SetInfo 将新用户提交到服务器。
创建新用户帐户时,默认禁用该帐户。 必须手动或以编程方式启用帐户。 若要以编程方式启用用户帐户,请从 userAccountControl 属性中删除ADS_UF_ACCOUNTDISABLE标志。
创建新用户帐户时,帐户的 userAccountControl 属性会自动设置UF_PASSWD_NOTREQD标志,指示帐户无需密码。 如果创建帐户的域的安全策略需要所有用户帐户的密码,则必须从帐户的 userAccountControl 属性中删除UF_PASSWD_NOTREQD标志。