Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ADSI para visual basic 6

248 views
Skip to first unread message

ion j

unread,
May 10, 2004, 2:43:28 AM5/10/04
to
Hola:
he cargado la libreria y la referencia pero no consigo
hacer un solo usuario desde el codigo que ponen en varios
sitios como ejemplo. esto que tengo para probar y no
funciona pq da un error y no se ni que puede ser lo que
hago mal. mi red es sipd0n y el pc es obiwan. y queria
probar a meter en la unidad organizativa user o cualquier
otra un usuario nuevo. pero no lo consigo si alguien sabe
que tengo mal que me ayude si es que puede y sabe.

el error que me da es el siguiente-->
error '-2147022651(800708c5)'en tiempo de ejecucion
error de Automatización

yo cuando escribo en el input box pongo directamente:
sipd0n

si alguien sabe en lo que fallo que me corrija;)


Private Sub Form_Load()
Dim Container As IADsContainer
Dim NewUser As IADsUser
Dim strDomain


Do
strDomain = InputBox("Please enter a
domainname", "Input")
Loop Until strDomain <> ""

Set Container = GetObject("WinNT://" & strDomain)

' Crear el nuevo usuario de las Interfaces de servicio de
Active Directory.
Set NewUser = Container.Create("User", "Juana")
' Establecer la contraseña de Juana.
'NewUser.SetPassword ("argus")

' Completar la operación para crear el objeto en el
directorio.
NewUser.Description = "pepe"
NewUser.SetInfo'<--señala un fallo aqui aunque lo
' demas lo toma bien

End Sub

ION J
Becario de informatica
UPV
pupas...@hotmail.com
.


Eduardo A. Morcillo [MS MVP VB]

unread,
May 10, 2004, 2:59:33 AM5/10/04
to
> el error que me da es el siguiente-->
> error '-2147022651(800708c5)'en tiempo de ejecucion
> error de Automatización

Ese error es: "La contraseña no cumple con los requisitos de la directiva de
contraseña. Compruebe los requisitos de longitud mínima, complejidad e
historial de la contraseña."

--
Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Alejandro Campos Magencio [MS]

unread,
May 10, 2004, 3:14:31 AM5/10/04
to
Creo recordar que tú querías crear usuarios en red (Directorio Activo), y no
en la máquina local. Para crear un usuario en el Directorio Activo no se
utiliza el provider WINNT, sino LDAP, y la cadena para el Container, por
ejemplo en mi caso, tendría la siguiente pinta:

set container =
GetObject(LDAP://cn=Users,DC=europe,DC=corp,DC=microsoft,DC=com)

donde el grupo donde crearía el usuario es Users, y el dominio
europe.corp.microsoft.com.
--
Un saludo,

Alejandro Campos Magencio [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.
"ion j" <anon...@discussions.microsoft.com> wrote in message
news:aa2101c4365a$1a41e860$a101...@phx.gbl...

anon...@discussions.microsoft.com

unread,
May 10, 2004, 3:37:00 AM5/10/04
to
Si gracias por recordarlo, esque yo necesito que sea en un
dominio y no en pcs locales. la cosa es que no se que
tengo que poner para obtener la direccion de mi dominio
automaticamente ya que no quiero hacerlo manualmente y no
deseo que sea estatico. de todas formas contestando a la
replica que decis que me produce el fallo, debo decir que
no es eso porque lo tengo sin restricciones y he probado
poniendo pass y sin pass asi que nose como puede ser ese
el fallo. tengo quitadas las restricciones de todo tipo.

ION J.

>-----Mensaje original-----

>..
>
>
>
>.
>

Alejandro Campos Magencio [MS]

unread,
May 10, 2004, 8:03:19 AM5/10/04
to
Con el siguiente código puedes obtener el grupo Users sin saber el dominio
en el que estás:

Dim root As IADs
Dim container As IADsContainer

Set root = GetObject("LDAP://rootDSE")
Set container = GetObject("LDAP://cn=Users," +
root.Get("defaultNamingContext"))

--
Un saludo,

Alejandro Campos Magencio [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.

<anon...@discussions.microsoft.com> wrote in message
news:a9c301c43661$94acb290$a601...@phx.gbl...

ion j

unread,
May 10, 2004, 2:13:05 PM5/10/04
to
por lo que leo en el codigo con cambiar el cn=Users
por cualquier otra unidad organizativa funcionara igual
mirando en otras unidades organizativas no?

gracias me salvas;) pq me he pasado la mañana.
por cierto otra pregunta es por saber si puedo mejorar mi
idea.
si quiero hacer eso pero con otros equipos controladores
de dominio. debo hacer algo especifico? esque he
conseguido listar la lista de dominios de un bosque. pero
no alcanzo a que debo poner para distinguir si son
subdominios etc.

Me sigue fallando el mismo tema del comienzo del
post,crear un usuario. nose a que se debe ya que tengo
todo puesto Disabled y nose que me puede fallar ya que no
se si puede ser porque no declaro que usuario es el
creador o nose, puede ser por algo asi? porque esque no
entiendo pq me sale lo del fallo de password ya que no
tengo puesta ninguna restriccion. me parece de lo mas
extraño. tengo todo deshabilitado.

ION J.
Becario informatica
upv

>-----Mensaje original-----

>.
>

Alejandro Campos Magencio [MS]

unread,
May 11, 2004, 4:29:13 AM5/11/04
to
Imagina que tienes una unidad organizativa llamada Oficinas, y un grupo
llamado Usuarios, entonces tendrías que poner:

cn=Usuarios,ou=Oficinas,dc=...

Si quieres realizar una consulta sobre un servidor que no sea el tuyo,
habría que hacer las consultas LDAP con la siguiente forma:

LDAP://nombre_servidor/rootDSE

Ahora, en cuanto a tu error, si quieres garantizar que no sea tema de
permisos, puedes intentar acceder al directorio activo especificando
directamente tus credenciales, que habrán de ser de un usuario con permisos
para crear otros usuarios (administrador del dominio, p.ej.):

Dim root As IADs
Dim ldap As IADsOpenDSObject
Dim container As IADsContainer

Set root = GetObject("LDAP://" + server + "/rootDSE")
dc = root.Get("defaultNamingContext")

bindUser = "domain\user"
bindPassword = "password"
Set ldap = GetObject("LDAP:")
Set container = ldap.OpenDSObject("LDAP://" + server +
"/cn=Usuarios,ou=Oficinas," + dc, bindUser, bindPassword, 0)


Otra cosa es quitar los "On error resume next" si los tienes, ya que muchas
veces enmascaran los errores reales.

Además, he estado mirando información acerca del error 0x800708c5
(-2147022651), y he visto que hace referencia a problemas de credenciales.

Otro consejo, antes de intentar crear un usuario, ¿has probado a ver si
puedes acceder al directorio activo y obtener alguna información del mismo
(algo de otro usuario, por ejemplo)?
--
Un saludo,

Alejandro Campos Magencio [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.
"ion j" <anon...@discussions.microsoft.com> wrote in message

news:af0a01c436ba$7073a2e0$a301...@phx.gbl...

anon...@discussions.microsoft.com

unread,
May 11, 2004, 5:38:02 AM5/11/04
to
gracias por tu respuesta.
En cuanto a lo de ver datos en el active directory.he
probado por ejemplo a comprobar si un usuario tiene
bloqueo o no y si me permite detectar eso por ejemplo. no
he probado mucho mas. dentro del active directory puedo
manipularlo totalmente ya que estoy en el servidor
haciendo las pruebas. en cualquier caso probare a hacer
mas pruebas.
si tengo alguna duda ya te seguire comentando.


>-----Mensaje original-----

anon...@discussions.microsoft.com

unread,
May 11, 2004, 5:40:43 AM5/11/04
to
El problema que tengo no se da al hacer listados y ver
datos, sino al intentar crear nuevos.como por ejemplo
usuarios. que es la necesidad. porque visualizar datos de
active directory si me permite y de hecho ya lo he probado
como bien te comente antes. listando usuarios de users o
propiedades de usuarios o grupos.

ion j

unread,
May 11, 2004, 6:29:18 AM5/11/04
to
El primero funciona sin problemas y el segundo da
problemas eso a que se debe? los cargo en un form_load por
ejemplo y el primero lo hace y el segundo no lo hace.dice:
error '-2147463168(80005000)' en tiempo de ejecucion
error de automatizacion
porque puede ser? porque abro 2 veces el active directory?
o es otro error y asi esta bien?


Public Sub FListDom()


Dim root As IADs
Dim container As IADsContainer

Dim objusu



Set root = GetObject("LDAP://rootDSE")
Set container = GetObject("LDAP://cn=Users," + root.Get
("defaultNamingContext"))

For Each objusu In container
Form1.LstUsuDom.AddItem objusu.Name
Next
End Sub

Public Sub FListDom1()


Dim root As IADs
Dim container As IADsContainer

Dim objgrp



Set root = GetObject("LDAP://rootDSE")

Set container = GetObject("LDAP://CN=Users,OU=nuevo" +
root.Get("defaultNamingContext"))

For Each objusu In container
Form1.LstGDom.AddItem objgrp.Name
Next
End Sub

ion j

unread,
May 12, 2004, 3:18:07 AM5/12/04
to
Alguno puede decirme que error es este? esque he
conseguido avanzar un poco en mi investigacion pero..sigo
con el mismo problema del principio.no he conseguido hacer
una sola cuenta de usuario.

error '-2147022651(800708c5)'en tiempo de ejecucion
error de automatizacion
este es distinto del primero que puse.Si alguno sabeis que
tengo mal comentadmelo.espero que no sea cosa de passwd
otra vez pq no tengo ni idea ya que hacer . jaja.


Public Sub FNewUsu(strDomain)'donde strDomain es el nombre
'del servidor


Dim Container As IADsContainer
Dim NewUser As IADsUser

'Relacionar con el contenedor conocido.


Set Container = GetObject("WinNT://" & strDomain)

'Crear nuevos usuarios en el Active Directory Service
'Interfaces.
Set NewUser = Container.Create("User", "Pepote")

'Set password.
NewUser.SetPassword ("Argus")

'la linea inferior la encontre en internet pero no la
'identificaba como valida y puse la superior
'NewUser.AccountRestrictions.SetPassword ("Argus")

'Confirmar ,Crear objeto en el directorio
NewUser.SetInfo
End Sub


Ojala sepais decirme lo que hago mal .

ION J.
BECARIO INFORMATICA
UPV

Alejandro Campos Magencio [MS]

unread,
May 12, 2004, 3:57:59 AM5/12/04
to
¿Está bien la unidad organizativa?
En el segundo ejemplo veo "For Each objusu In container", ¿pero "objusu" no
debería llamarse "objgrp"?
Sería mejor que además del error dijeras en qué línea exactamente te da el
mismo.

--
Un saludo,

Alejandro Campos Magencio [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.
"ion j" <anon...@discussions.microsoft.com> wrote in message

news:b3b101c43742$d0f93a20$a301...@phx.gbl...

Alejandro Campos Magencio [MS]

unread,
May 12, 2004, 4:00:55 AM5/12/04
to
He encontrado la siguiente descripción para el error -2147022651(0x800708c5)
"The password does not meet the password policy requirements.". ¿No será que
tu problema es la password que estás eligiendo, que no es lo suficientemente
compleja?

--
Un saludo,

Alejandro Campos Magencio [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.
"ion j" <anon...@discussions.microsoft.com> wrote in message

news:bc0401c437f1$462607c0$a001...@phx.gbl...

anon...@discussions.microsoft.com

unread,
May 13, 2004, 2:27:17 AM5/13/04
to
Alejandro gracias por tu ayuda, pero al final he
conseguido crear un usuario sencillo en el active
directory que forma parte del grupo users.
con este codigo. lo que no consigo ponerle es el nombre de
acceso del usuario y no consigo entender que hace cada
funcion porque algunas me dice que son de solo lectura.
quizas tu sepas mas del tema,sobre que hace cada opcion
porque me gustaria aprovecharlas todas a ser posible para
mi programa ya que ademas he probado algunas y no
funcionan como me parecia a mi que podian hacerlo.


Dim Container As IADsContainer
Dim NewUser As IADsUser

'Bind to the known container.
Set Container = GetObject("WinNT://" + strDomain)
'la variable equivale a strDomain="miservidor"

On Error Resume Next

Set NewUser = Container.Create("User", "Jane")
NewUser.firsname = "jane"'no me funciona asi
NewUser.LastName = "morrison"'no me funciona asi
NewUser.FullName = "jane morrison"
NewUser.Profile = "\\midirec\perfiles\%
username%" 'direccion del perfil

NewUser.AccountExpirationDate = "08 / 06 / 2004" ' para
que te de el dia deseado es +1 en el dia
NewUser.LoginScript = "pc.bat"
NewUser.SetPassword ("ARGUCIA")

NewUser.SetInfo

anon...@discussions.microsoft.com

unread,
May 13, 2004, 3:21:17 AM5/13/04
to
De momento desecho la idea de hacerlo por red y tratare de
hacerlo solo en el pc controlador de dominio, para
facilitarme la tarea.Cuando termine el programa tratare de
mejorarlo posteriormente a su uso con ldap.ya que me esta
dando muchos problemas y necesito obtener los frutos
rapidamente.


Alejandro Campos Magencio [MS]

unread,
May 13, 2004, 3:27:38 AM5/13/04
to
Sin poder dedicar tiempo a investigar (lo que podría hacer si abres una
consulta con nosotros, Soporte Técnico de MS ;-) ), lo único que te podría
decir es lo que aparece en el MSDN (en inglés):

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/iadsuser_property_methods.asp

--
Un saludo,

Alejandro Campos Magencio [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.

<anon...@discussions.microsoft.com> wrote in message
news:c44901c438b3$5670c8f0$a401...@phx.gbl...

0 new messages