Удаление объекта в Active Directory с помощью IADS

#c #active-directory #ldap

#c #active-directory #ldap

Вопрос:

это пример кода в MSDN для удаления объекта, такого как user, … но когда я использую этот пример
, эта строка «Всплывает-> DeleteObject (0);» результат «E_ACCESSDENIED» почему? не могли бы вы мне помочь

 IADsContainer *pCont;
LPWSTR adsPath = L"LDAP://OU=Sales,DC=Fabrikam,DC=com";
HRESULT hr = ADsGetObject(adsPath,IID_IADsContainer,(void**)amp;pCont);
if (FAILED(hr)) exit(hr);

IADsDeleteOps *pOps;
hr = pCont->QueryInterface(IID_IADsDeleteOps,(void**)amp;pOps);
pCont->Release();
if(FAILED(hr) exit(hr);
pOps->DeleteObject(0);
pOps-Release();
  

Ответ №1:

Учетная запись, которую вы используете для выполнения действия, не имеет разрешения на удаление целевого объекта.

Комментарии:

1. у меня есть имя пользователя и пароль администратора!

2. Является ли это контейнерным объектом? Возможно, вам придется сначала удалить содержимое, прежде чем удалять контейнер.

3. вы тестировали его самостоятельно? я тестирую его на пустой организационной единице и не сработал! : (если вы протестируете его, пожалуйста, сообщите мне подробности

Ответ №2:

Используйте ADsOpenObject, который принимает имя пользователя и пароль в качестве аргументов, передает учетные данные администратора, и код будет работать нормально. Для справочной ссылки