Ошибка при создании пользователя в домене.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
KOL
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 03.01.2006 (Вт) 4:03

Ошибка при создании пользователя в домене.

Сообщение KOL » 04.10.2006 (Ср) 7:25

Код: Выделить всё
Private Sub CreateUser(oCont)
   
    Dim oUser As Object

    Set oUser = oContainer.Create("User", "CN=" & sFullName)

    oUser.Put "samAccountName", sLogin
    oUser.Put "givenName", sFirstName
    oUser.Put "sn", sLastName
    oUser.Put "userPrincipalName", sLogin & sEmail
    ...


При назначении параметров (oUser.Put) получаю ошибку:
"Run-time error '-2147467259 (80004005)':
Automation error"

Почему?

KOL
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 03.01.2006 (Вт) 4:03

Сообщение KOL » 04.10.2006 (Ср) 7:30

Вдогонку: объект oContainer создавался так:

Код: Выделить всё
Dim oContainer As Object
Set oContainer = GetObject("LDAP://10.60.0.10/OU=NewUsers,DC=my,DC=serw,DC=ru")


При компиляции ошибок нет, ldap-путь указан верно.

KOL
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 03.01.2006 (Вт) 4:03

Сообщение KOL » 04.10.2006 (Ср) 7:39

Мало того. Для чистоты эксперимента была подключена "Active DS Type Library" и взят готовый пример из Microsoft Active Directory SDK:

Код: Выделить всё
Private Sub Command1_Click()

    Dim strDisplayname As String
    Dim strAlias As String
    Dim strTelephone As String
    Dim objCont As IADsContainer
    Dim objNewCR As IADs
   
    strDisplayname = "James Smith"
    strAlias = "jsmith"
    strTelephone = "867-5309"
   
    Set objCont = GetObject("LDAP://Server/cn=Recipients,ou=Site,o=Org")
    Set objNewCR = objCont.Create("Remote-Address", CStr("cn=" & strAlias))
    objNewCR.Put "cn", CStr(strDisplayname)
    objNewCR.Put "uid", CStr(strAlias)
    objNewCR.Put "telephoneNumber", CStr(strTelephone)
    objNewCR.Put "Target-Address", "SMTP:jsmith@microsoft.com"
    objNewCR.SetInfo

End Sub


На последней строчке получаю ошибку:
"Run-time error '-2147016694 (8007200a)':
Automation error"

Что не так?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.10.2006 (Ср) 8:23

За неиспользование кнопки "правка" будет предупреждение.
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.10.2006 (Ср) 11:30

видимо в твоем AD нет таких параметров (telephoneNumber,Target-Address и тп), добавь их через администратора AD, а уже потом можешь конкретному юзеру эти параметры назначать.

KOL
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 03.01.2006 (Вт) 4:03

Сообщение KOL » 04.10.2006 (Ср) 12:20

Konst_One
Действительно, именно так и было. Спасибо.
Ещё вопрос. Пользователя создаём посредством ADSI. Мейлбокс же для него создается с помощью CDOEXM:
Код: Выделить всё
   oMailbox.CreateMailbox "LDAP://10.60.0.10/CN=Mailbox Store,CN=First Storage Group,CN=InformationStore,CN=Servers,CN=Administrative Groups,CN=SERW,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=serw,DC=ru" & _
   oUser.SetInfo

(Так работает в vbs-сценарии, по которому пишется программа)
При компиляции, в строке oUser.SetInfo получаю ошибку:
"Compile error:
Expected Function or variable"
Понятно, что на локальной машине нет поддержки CDOEXM. Но хотелось бы скомпилировать экзешник, после чего запустить его на сервере с Exchange, где сия поддержка имеется.
Можно ли скомпилировать исполняемый файл в данном случае? Если да, то как.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.10.2006 (Ср) 13:09

Используй позднее связывание.
Т.е. все объектные переменные объявляй как Object.
Так же проверь, что не используются константы, объявленные во внешней библиотеке.
Lasciate ogni speranza, voi ch'entrate.

KOL
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 03.01.2006 (Вт) 4:03

Сообщение KOL » 04.10.2006 (Ср) 13:20

alibek
Если я объявляю все объектные переменные как Object, то получаю ошибку, указанную в самом первом посте этой темы.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.10.2006 (Ср) 14:44

значит, придется компилить на сервере


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Mail.ru [бот], Majestic-12 [Bot] и гости: 4

    TopList