ADSI LDAP 공급자를 사용하여 사용자 만들기
ADSI LDAP 공급자를 사용하면 전역 사용자 계정만 만들 수 있습니다. 로컬 계정은 SAM 데이터베이스에 상주하며 WinNT 공급자를 사용하여 만들어야 합니다. WinNT 공급자를 사용하여 사용자 개체를 만드는 방법에 대한 자세한 내용은 WinNT 사용자 개체 참조하세요.
사용자 개체를 만들려면
사용자 개체가 상주할 컨테이너에 바인딩하고 컨테이너에 대한 IADsContainer 또는 IDirectoryObject 인터페이스를 가져옵니다.
IADsContainer.Create 또는 IDirectoryObject::CreateDSObject 메서드를 사용하여 사용자 개체를 만듭니다.
사용자 개체를 만드는 데 필요한 최소 특성은 사용되는 디렉터리 서비스에 따라 달라집니다. Active Directory 사용자를 만드는 방법에 대한 자세한 내용은 사용자만들기를 참조하세요.
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;
}