Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Обработка ошибки E_ADS_SCHEMA_VIOLATION в DelphiXe2 при добавлении свойств в Active Directory

Delphi , Файловая система , Активные директории

При работе с Active Directory в DelphiXe2 может возникнуть ошибка E_ADS_SCHEMA_VIOLATION, когда пытаются добавить или изменить некоторые свойства пользователя. В этой статье мы рассмотрим причины этой ошибки и предложим способы ее решения.

Причины ошибки E_ADS_SCHEMA_VIOLATION

Эта ошибка возникает, когда попытка изменить свойство пользователя нарушает схему Active Directory. Схема Active Directory определяет набор правил и ограничений для объектов в каталоге. Например, некоторые свойства могут быть обязательными, а другие могут иметь ограничения на тип или длину данных.

Решение ошибки E_ADS_SCHEMA_VIOLATION

  1. Установите пароль перед настройкой информации

Ошибка E_ADS_SCHEMA_VIOLATION может возникнуть, если вызов SetInfo происходит до установки пароля пользователя. Чтобы избежать этой ошибки, убедитесь, что вызов SetPassword происходит перед вызовом SetInfo.

Пример: pascal Usr := Comp.Create('user', 'Koko') as IADsUser; Usr.SetPassword('Fa123456789'); Usr.SetInfo;

  1. Убедитесь, что установлены все обязательные свойства

При создании пользователя убедитесь, что все обязательные свойства установлены. Например, для пользователя Active Directory свойство sAMAccountName является обязательным.

Пример: pascal Usr := Comp.Create('user', 'Koko') as IADsUser; Usr.SetPassword('Fa123456789'); Usr.SAMAccountName := 'KokoUser'; Usr.SetInfo;

  1. Изменение расширенных атрибутов

Чтобы изменить расширенные атрибуты, такие как extensionAttribute1, вам может потребоваться использовать LDAP-провайдер Active Directory. LDAP-провайдер предпочтительнее, так как он предоставляет более низкий уровень доступа к Active Directory и позволяет работать с расширенными атрибутами.

Пример использования LDAP-провайдера для изменения расширенного атрибута: ```pascal Uses ADODB;

var Conn: ADODB.Connection; Cmd: ADODB.Command; Param: ADODB.Parameter; begin Conn := CoADOConnection.Create(nil); Conn.ConnectionString := 'Provider=ADsDSOObject;' + 'Encrypt Password=False;' + 'Password=your_password;' + 'User ID=your_username;' + 'Initial Catalog=your_domain;'; Conn.Open;

 Cmd := Conn.CreateCommand;
 Cmd.CommandText := 'UPDATE ''LDAP://dc=ru/dc=mydomain/OU=User'''
   + ' SET extensionAttribute1 = ?'
   + ' WHERE sAMAccountName = ''KokoUser''';

 Param := Cmd.CreateParameter('extensionAttribute1', adVarChar, adParamInput, 255, 'New Value');
 Cmd.Parameters.Append(Param);

 Cmd.Execute(adExecuteNonQuery);
 Cmd.Free;
 Conn.Close;
 Conn.Free;

end; ```

Добавление пользователя или изменение его свойств с помощью ADOConnection1.SQL

Вы можете использовать ADOConnection1 для добавления пользователя или изменения его свойств в Active Directory. Для этого вам потребуется выполнить соответствующий SQL-запрос.

Пример добавления нового пользователя с помощью ADOConnection1:

var
  SQL: string;
begin
  SQL := 'INSERT INTO ''LDAP://dc=ru/dc=mydomain/OU=User'''
    + ' (objectClass, sAMAccountName, userPrincipalName, name, displayName)'
    + ' VALUES (''user'', ''NewUser'', ''newuser@mydomain.ru'', ''New User'', ''New User'')';
  ADOConnection1.Execute(SQL);
end;

Пример изменения свойства пользователя с помощью ADOConnection1:

var
  SQL: string;
begin
  SQL := 'UPDATE ''LDAP://dc=ru/dc=mydomain/OU=User'''
    + ' SET displayName = ''New Display Name'''
    + ' WHERE sAMAccountName = ''KokoUser''';
  ADOConnection1.Execute(SQL);
end;

Заключение

При работе с Active Directory в DelphiXe2 может возникнуть ошибка E_ADS_SCHEMA_VIOLATION. Чтобы избежать этой ошибки, убедитесь, что все обязательные свойства пользователя установлены, и установите пароль пользователя перед настройкой информации. Для изменения расширенных атрибутов лучше всего использовать LDAP-провайдер Active Directory. Кроме того, вы можете использовать ADOConnection1 для добавления пользователей или изменения их свойств в Active Directory.

Создано по материалам из источника по ссылке.

Эта статья посвящена решению ошибки E_ADS_SCHEMA_VIOLATION, возникающей при работе с Active Directory в DelphiXe2, и предлагает способы устранения данной проблемы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Активные директории ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 14:27:42/0.0051300525665283/1