powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Изменение полей в Active Directory. Ошибка EAccessViolation
11 сообщений из 11, страница 1 из 1
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38006253
Mr.Dix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Подскажите как правильно изменить поля(к примеру, displayName, homePhone и др.) у пользователя в AD, зная "путь" до него(LDAP://CN=Николай,CN=Users,DC=Fabrikam,DC=com).
В msdn нашел пример использования методов и свойств интерфейса IADs

Код C++

IADs *pADs NULL;
VARIANT var;
HRESULT hr = S_OK;
LPWSTR path=L"LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com";
hr = ADsGetObject( path, IID_IADs, (void**) pADs);

if(!(hr==S_OK)) {return hr;}

VariantInit(&var);
// Update values in the cache.
V_BSTR(&var) = SysAllocString(L"Smith");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("sn"), var );
VariantClear(&var);

// Commit changes to the directory store.
hr = pADs->SetInfo();

if(pADs)
pADs->Release();
Почему при компиляции во время выполнения строки

Код C++
hr = pADs->Put(CComBSTR("sn"), var )

дебагер выкидывает ошибку класса EAccessViolation?
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38006290
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.DixПочему при компиляции во время выполнения строки
дебагер выкидывает ошибку класса EAccessViolation?
Потому что pADs равно NULL (или я где-то проглядел присваивание).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007454
Mr.Dix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
На сколько я понимаю, то присваивание происходит здесь:
ADsGetObject( path, IID_IADs, (void**) pADs)
Поправьте, если я ошибаюсь...
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007465
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Dix
Код: sql
1.
ADsGetObject( path, IID_IADs, (void**) pADs)


Поправьте, если я ошибаюсь...
Ошибаешься. Сравни свою строку и строку из примера в MSDN:
[src]ADsGetObject(L"WinNT://MyDomain/Users/JeffSmith",
IID_IADsUser,
(void**) &pUser);[/quot]
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007492
Mr.Dix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Я брал пример от сюда:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa746354(v=vs.85).aspx
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007512
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.DixЯ брал пример от сюда:
Тебе не повезло нарваться на код с багом. Такое бывает.

Обрати внимание, что функции требуется указатель на указатель, а ты передаёшь просто
указатель. Если бы не топорное приведение типов, этот код даже не смог бы скомпилироваться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007527
Mr.Dix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Т.е. дело только в "&" ? Ну, при условии, конечно, что путь(path) до пользователя правильный.
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007529
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.DixТ.е. дело только в "&" ?
Для сабжа - да. И в этом ты легко мог убедиться поставив точку останова и посмотрев
значение переменной.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007531
Mr.Dix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Дмитрий, спасибо за ответ! Завтра попробую. Отпишусь
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007773
Mr.Dix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, действительно. Ну плюс ко всему путь у меня был некорректно введен. Теперь все нормально, но результат выполнения строки
pADs->SetInfo() "-2147016657", соответственно, записи в поле не происходит. Пытаюсь разобраться в чем тут может быть дело.
...
Рейтинг: 0 / 0
Изменение полей в Active Directory. Ошибка EAccessViolation
    #38007856
Mr.Dix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё заработало, после того, как поменял строку
hr = pADs->Put(CComBSTR("sn"), var );
на
hr = pADs->Put(L"sn", var );

Нельзя на 100% доверять msdn
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Изменение полей в Active Directory. Ошибка EAccessViolation
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]