home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 27 / IOPROG_27.ISO / SOFT / ADSDK.ZIP / Samples / Start / Create / vc / Create.cpp next >
Encoding:
C/C++ Source or Header  |  1999-01-18  |  2.3 KB  |  98 lines

  1. // Create.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "stdio.h"
  6. #include "activeds.h"
  7.  
  8.  
  9. int main(int argc, char* argv[])
  10. {
  11.     HRESULT hr;
  12.     IADsContainer *pCont = NULL;
  13.     IDispatch *pDisp=NULL;
  14.  
  15.     CoInitialize(NULL);
  16.  
  17.     ///////////////////////////////////////////////////
  18.     // Create a user using IADsContainer::Create
  19.     ////////////////////////////////////////////////////
  20.     hr = ADsGetObject( L"WinNT://INDEPENDENCE", IID_IADsContainer, (void**) &pCont );
  21.     if (!SUCCEEDED(hr) )
  22.     {
  23.         return 0;
  24.     }
  25.  
  26.     IADs *pADs=NULL;
  27.     hr = pCont->Create(L"user", L"AliceW", &pDisp );
  28.     pCont->Release();
  29.  
  30.     if( !SUCCEEDED(hr) )
  31.     {
  32.         return 0;
  33.     }
  34.  
  35.     hr = pDisp->QueryInterface( IID_IADs, (void**) &pADs );
  36.     pDisp->Release();
  37.  
  38.     if ( !SUCCEEDED(hr) )
  39.     {
  40.         return 0;
  41.     }
  42.  
  43.     pADs->SetInfo(); // Commit
  44.  
  45.     pADs->Release(); // Release
  46.  
  47.  
  48.     
  49.     ///////////////////////////////////////////////////////////
  50.     // Use IDirectoryObject to create an object
  51.     ////////////////////////////////////////////////////////////
  52.     IDirectoryObject *pDirObject=NULL;
  53.     ADSVALUE   sAMValue;
  54.     ADSVALUE   uPNValue;
  55.     ADSVALUE   classValue;
  56.  
  57.  
  58.     ADS_ATTR_INFO  attrInfo[] = 
  59.     {  
  60.         { L"objectClass",   ADS_ATTR_UPDATE, 
  61.                             ADSTYPE_CASE_IGNORE_STRING, &classValue, 1 },
  62.         {L"sAMAccountName", ADS_ATTR_UPDATE, 
  63.                             ADSTYPE_CASE_IGNORE_STRING, &sAMValue, 1},
  64.         {L"userPrincipalName", ADS_ATTR_UPDATE, 
  65.                                ADSTYPE_CASE_IGNORE_STRING, &uPNValue, 1},
  66.     };
  67.     DWORD dwAttrs = sizeof(attrInfo)/sizeof(ADS_ATTR_INFO); 
  68.  
  69.     classValue.dwType = ADSTYPE_CASE_IGNORE_STRING;
  70.     classValue.CaseIgnoreString = L"user";
  71.  
  72.     sAMValue.dwType=ADSTYPE_CASE_IGNORE_STRING;
  73.     sAMValue.CaseIgnoreString = L"mikes";
  74.  
  75.     uPNValue.dwType=ADSTYPE_CASE_IGNORE_STRING;
  76.     uPNValue.CaseIgnoreString = L"mikes@arcadiabay.com";
  77.  
  78.     // Create this user in an organizational unit
  79.     hr = ADsGetObject(L"LDAP://OU=DSys,DC=windows2000,DC=nttest,DC=microsoft,DC=com",
  80.                       IID_IDirectoryObject, (void**) &pDirObject );
  81.  
  82.     if ( SUCCEEDED(hr) )
  83.     {
  84.         hr = pDirObject->CreateDSObject( L"CN=Mike Smith",  attrInfo, 
  85.                                          dwAttrs, &pDisp );
  86.         if ( SUCCEEDED(hr) )
  87.         {
  88.             pDisp->Release();
  89.         }
  90.     }
  91.     pDirObject->Release();
  92.  
  93.  
  94.  
  95.     CoUninitialize();
  96.     return 0;
  97. }
  98.