home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 27 / IOPROG_27.ISO / SOFT / ADSDK.ZIP / Samples / Start / Write / vc / Write.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-19  |  2.7 KB  |  124 lines

  1. // Write.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.     IADs *pADs=NULL;
  13.     LPWSTR pszADsPath = L"LDAP://CN=Jane Johnson,OU=DSys,DC=windows2000,DC=nttest,DC=microsoft,DC=com";
  14.  
  15.     CoInitialize(NULL);
  16.  
  17.     ///////////////////////////////////
  18.     // Modifying attributes via IADs
  19.     ////////////////////////////////////
  20.     hr = ADsGetObject(pszADsPath,
  21.                       IID_IADs, 
  22.                          (void**) &pADs );
  23.  
  24.     if (!SUCCEEDED(hr) )
  25.     {
  26.         return hr;
  27.     }
  28.  
  29.     VARIANT var;
  30.     
  31.     
  32.     // we omit checking result for brevity..
  33.  
  34.     // First Name
  35.     VariantInit(&var);
  36.     V_BSTR(&var) = SysAllocString(L"Jane");
  37.     V_VT(&var) = VT_BSTR;
  38.     hr = pADs->Put( L"givenName", var );
  39.  
  40.     // Last Name
  41.     VariantClear(&var);
  42.     V_BSTR(&var) = SysAllocString(L"Johnson");
  43.     V_VT(&var) = VT_BSTR;
  44.     hr = pADs->Put( L"givenName", var ); 
  45.     VariantClear(&var);
  46.  
  47.  
  48.     // Other Telephones
  49.     LPWSTR pszPhones[] = { L"425 844 1234", L"425 924 4321" };
  50.     DWORD dwNumber = sizeof( pszPhones ) /sizeof(LPWSTR);
  51.  
  52.     hr = ADsBuildVarArrayStr( pszPhones, dwNumber, &var );
  53.     hr = pADs->Put( L"otherTelephone", var ); 
  54.     VariantClear(&var);
  55.  
  56.     hr = pADs->SetInfo();
  57.     pADs->Release();
  58.  
  59.     if (!SUCCEEDED(hr) )
  60.     {
  61.         
  62.         return hr;
  63.     }
  64.  
  65.  
  66.  
  67.     /////////////////////////////////////////////////
  68.     // Alternatively, you can use IDirectoryObject
  69.     //////////////////////////////////////////////////
  70.     IDirectoryObject *pDir=NULL;
  71.     hr = ADsGetObject(pszADsPath,
  72.                       IID_IDirectoryObject, 
  73.                          (void**) &pDir );
  74.  
  75.     if ( !SUCCEEDED(hr) )
  76.     {
  77.         return hr;
  78.     }
  79.  
  80.  
  81.     
  82.     DWORD  dwReturn;
  83.     ADSVALUE  snValue;
  84.     ADSVALUE  fNameValue;
  85.     ADSVALUE  phoneValue[2];
  86.  
  87.     ADS_ATTR_INFO  attrInfo[] = {   
  88.         {L"givenName",ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING,&snValue,1},
  89.         {L"sn", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING,&fNameValue,1 },
  90.         {L"otherTelephone", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, phoneValue,2 }
  91.                                 };
  92.     DWORD dwAttrs = sizeof(attrInfo)/sizeof(ADS_ATTR_INFO); 
  93.  
  94.     ///// First Name ///////////
  95.     fNameValue.dwType=ADSTYPE_CASE_IGNORE_STRING;
  96.     fNameValue.CaseIgnoreString = L"Johnson";
  97.     
  98.  
  99.     ///// Last Name ///////////
  100.     snValue.dwType= ADSTYPE_CASE_IGNORE_STRING;
  101.     snValue.CaseIgnoreString = L"Johnson";
  102.     
  103.     ///// Other Telephone ///////////
  104.     phoneValue[0].dwType = ADSTYPE_CASE_IGNORE_STRING;
  105.     phoneValue[0].CaseIgnoreString = L"425 844 1234";
  106.  
  107.     phoneValue[1].dwType = ADSTYPE_CASE_IGNORE_STRING;
  108.     phoneValue[1].CaseIgnoreString = L"425 924 4321";
  109.  
  110.     hr = pDir->SetObjectAttributes(attrInfo, dwAttrs, &dwReturn);
  111.  
  112.     pDir->Release();
  113.  
  114.     if ( !SUCCEEDED(hr) )
  115.     {
  116.         return hr;
  117.     }
  118.  
  119.  
  120.  
  121.     CoUninitialize();
  122.     return 0;
  123. }
  124.