Я пытаюсь обновить атрибут пользователя в Active Directory. Я вошел в систему как администратор домена и локально выполнил следующий код:
LPCWSTR pwszADsPath = L"LDAP://CN=MyUserName,CN=Users,DC=XXX,DC=YYY,DC=com";
// Bind to the root of the current domain.
hr = ADsOpenObject(pwszADsPath,
NULL,
NULL,
ADS_SECURE_AUTHENTICATION,
IID_IDirectorySearch,
(void**)&pDirObject);
// Bind to the object
if (SUCCEEDED(hr))
{
DWORD dwReturn = 0;
ADSVALUE givenName;
ADSVALUE phoneValue[2];
ADS_ATTR_INFO attrInfo[] = {
{L"givenName", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, &givenName, 1},
{L"otherTelephone", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, phoneValue, 2}
};
givenName.dwType = ADSTYPE_CASE_IGNORE_STRING;
givenName.CaseIgnoreString = L"Janet";
phoneValue[0].dwType = ADSTYPE_CASE_IGNORE_STRING;
phoneValue[0].CaseIgnoreString = L"425 844 1234";
phoneValue[1].dwType = ADSTYPE_CASE_IGNORE_STRING;
phoneValue[1].CaseIgnoreString = L"425 924 4321";
hr = pDirObject->SetObjectAttributes(attrInfo, sizeof(attrInfo) / sizeof(ADS_ATTR_INFO), &dwReturn);
if (SUCCEEDED(hr))
{
wprintf(L"%d Attributes updated\n", dwReturn);
}
else
{
wprintf(L"SetObjectAttributes failed. hr=0x%x\n", hr);
}
pDirObject->Release();
}
Когда я запускаю программу, я всегда получаю 0 Attributes updated
. И я подтверждаю в AD Users And Computers
, данное имя не обновляется.
pwszADsPath
правильно скопировано из редактирования ADSI, и у меня есть права на запись, что я пропустил?