使用 ADSI LDAP 提供程序创建用户

使用 ADSI LDAP 提供程序,只能创建一个全局用户帐户。 本地帐户驻留在 SAM 数据库中,必须使用 WinNT 提供程序创建。 有关使用 WinNT 提供程序创建用户对象的详细信息,请参阅 WinNT 用户对象

创建用户对象

  1. 绑定到用户对象将驻留的容器,并获取容器的 IADsContainerIDirectoryObject 接口。

  2. 使用 IADsContainer.CreateIDirectoryObject::CreateDSObject 方法创建用户对象。

  3. 创建用户对象所需的最低属性取决于所使用的目录服务。 有关创建 Active Directory 用户的详细信息,请参阅创建用户

  4. 如果使用 IADsContainer 接口,则在调用 IADs.SetInfo 方法之前,不会实际创建新对象。

    如果使用 IDirectoryObject 接口,则会在调用 CreateDSObject 方法时创建新对象。 最低属性(包括 objectClass)必须在传递给 CreateDSObject 方法的 ADS_ATTR_INFO 数组中指定。

示例 1

下面的代码示例创建具有默认属性的用户帐户。

Dim ou As IADs
Dim usr as IADsUser

On Error GoTo Cleanup

Set ou = GetObject("LDAP://OU=Finance,DC=Fabrikam,DC=COM")
Set usr = ou.Create("user", "cn=Jeff Smith")
usr.Put "samAccountName", "jeffsmith"
usr.SetInfo

Cleanup:
   If (Err.Number <> 0) Then
      MsgBox ("An error has occurred. " &  Err.Number)
   End If
   Set ou = Nothing
   Set usr = Nothing

示例 2

下面的代码示例创建具有默认属性的用户帐户。 为简洁起见,省略了错误检查。

#include <activeds.h>

int main()
{
   HRESULT hr = CoInitialize(NULL);

   IADsContainer *pCont;
   IADsUser *pUser;

   LPWSTR adsPath = L"LDAP://serv1/CN=Users,dc=Fabrikam,dc=com";
   LPWSTR usrPass = NULL;
   LPWSTR usrName = NULL;

   // Add code to securely get the user name and password or leave
   // as NULL to use the current security context.

   hr = ADsOpenObject(adsPath, 
                      usrName,
                      usrPass,
                      ADS_SECURE_AUTHENTICATION,
                      IID_IADsContainer,
                      (void**)&pCont);

   IDispatch *pDisp;
   hr = pCont->Create(CComBSTR("user"), CComBSTR("cn=Jeff Smith"), &pDisp);
   pCont->Release();

   hr = pDisp->QueryInterface(IID_IADsUser,(void**)&pUser);
   pDisp->Release();

   VARIANT var;
   VariantInit(&var);
   V_BSTR(&var) = L"jeffsmith";
   V_VT(&var)=VT_BSTR;
   hr = pUser->Put(CComBSTR("samAccountName"), var);

   hr = pUser->SetInfo();

   VariantClear(&var);
   pUser->Release();

   CoUninitialize();

   return 0;
}