Я пытаюсь обновить поле, относящееся к моему собственному объекту пользователя в Active Directory, используя ADSI и C++. Операционная система - Windows Server 2012 Standard.Общий доступ запретил пытаться обновить мое собственное поле в AD
Я могу читать, я могу позвонить Put без проблем, но когда я вызываю SetInfo, он возвращается с «General access denied». Я подтвердил, что это мой собственный объект пользователя, к которому я пытаюсь получить доступ.
я получить свой собственный FQDN, как это:
GetUserNameEx(EXTENDED_NAME_FORMAT::NameFullyQualifiedDN, pszFullyQualifiedDN, &dwFullyQualifiedDN);
Затем я использую это так:
LPTSTR pszObj = (LPTSTR)LocalAlloc(LPTR, dwMemToAlloc);
wcscpy_s(pszObj, dwMemToAlloc/sizeof(TCHAR), L"LDAP://");
wcscat_s(pszObj, dwMemToAlloc/sizeof(TCHAR), pszFullyQualifiedDN);
Я связываю к объекту, как это:
ADsGetObject(pszObj, IID_IADs, (LPVOID*)&pObject);
Этот вызов успешно завершено:
pObject->Get(CComBSTR("Description"), &var);
Этот вызов также преуспевает:
VariantClear(&var);
V_BSTR(&var) = SysAllocString(L"Some new value");
V_VT(&var) = VT_BSTR;
hr = pObject->Put(CComBSTR("Description"), var);
Попытка совершить вышеуказанное изменение, используя следующие:
pObject->SetInfo();
Это где это не удается.
Он возвращает E_ACCESSDENIED Ошибка общего отказа в доступе.
Как вы можете видеть, это мой собственный объект пользователя, который я пытаюсь обновить. По моему пониманию, которое должно работать, я являюсь членом группы пользователей домена. Который я есть.
В чем может быть проблема?