A much more simple option is to use the IADsTools interface (from the
Support Tools).  It has a TranslateNT4ToDN function.  In general, if there
is a DS API you want to use from Perl or VBScript, there is a good chance a
wrapper for it exists in IADsTools (there are a few exceptions).

Here is a Perl one-liner...

D:\>perl -MWin32::OLE -le "print Win32::OLE->new('IADsTools.DCFunctions')->
TranslateNT4ToDN($ARGV[0],'',1,0)" AMERLOCAL\rallen

CN=rallen,CN=Users,DC=amer,DC=local


Regards,
Robbie Allen
http://www.rallenhome.com/

> -----Original Message-----
> From: Roger Seielstad [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, August 05, 2003 8:43 AM
> To: '[EMAIL PROTECTED]'
> Subject: RE: [ActiveDir] Connection String
> 
> 
> Cool.... Might be able to stay away from a compiler for 
> another 3 months...
> 
> I know what it was that didn't work - VBScript can't handle 
> the way Exchange
> 5.5[1] returns the Primary Windows NT Account attribute - it 
> comes back as a
> string octet (I think). The VB examples all included the same 
> contstant
> defs, so I was thinking it was the same thing I looked at a 
> month or two
> ago.
> 
> Now I'm wondering if I can just direct translate using the 
> syntax below...
> I'll have to try that later...
> 
> --------------------------------------------------------------
> Roger D. Seielstad - MTS MCSE MS-MVP
> Sr. Systems Administrator
> Inovis Inc.
> 
> [1] Yeah, I'm still running it
> 
> 
> > -----Original Message-----
> > From: Glenn Corbett [mailto:[EMAIL PROTECTED] 
> > Sent: Tuesday, August 05, 2003 8:36 AM
> > To: [EMAIL PROTECTED]
> > Subject: Re: [ActiveDir] Connection String
> > 
> > 
> > >From the online help about NameTranslate, VBScript Example 
> > (havent tried it,
> > but looks like it should work)
> > 
> >   Dim nto
> >   const ADS_NAME_INITTYPE_SERVER = 2
> >   const ADS_NAME_TYPE_1779 = 1
> >   const ADS_NAME_TYPE_NT4 = 3
> > 
> >   server = "aDsServer"
> >   user   = "jeffsmith"
> >   dom    = "Fabrikam"
> >   passwd = "top secret"
> >   dn = "CN=jeffsmith,CN=Users,DC=Fabrikam,DC=COM"
> > 
> >   Set nto = Server.CreateObject("NameTranslate")
> >   nto.InitEx ADS_NAME_INITTYPE_SERVER, server, user, dom, passwd
> >   nto.Set ADS_NAME_TYPE_1779, dn
> >   result = nto.Get(ADS_NAME_TYPE_NT4)
> > 
> > 
> > 
> > ----- Original Message -----
> > From: "Roger Seielstad" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Tuesday, August 05, 2003 10:31 PM
> > Subject: RE: [ActiveDir] Connection String
> > 
> > 
> > The only problem with that is you can't call the same methods 
> > from VBScript
> > - which is where I seem to need it the most..
> > 
> > Better brush up on my mAd VB.net skilz...
> > 
> > --------------------------------------------------------------
> > Roger D. Seielstad - MTS MCSE MS-MVP
> > Sr. Systems Administrator
> > Inovis Inc.
> > 
> > 
> > > -----Original Message-----
> > > From: Glenn Corbett [mailto:[EMAIL PROTECTED]
> > > Sent: Tuesday, August 05, 2003 8:17 AM
> > > To: [EMAIL PROTECTED]
> > > Subject: Re: [ActiveDir] Connection String
> > >
> > >
> > > Pablo,
> > >
> > > here is some code I use in VB.NET to do a similar thing, should be
> > > convertable to C# without much hassle
> > >
> > > strUserName = the fully qualified LDAP path of a user or group, ie
> > > LDAP://CN=GroupName,DC=testdomain,DC=local
> > >
> > > 'Constants required, rest are in the online doco for NameTranslate
> > > Const ADS_NAME_INITTYPE_GC = 3
> > > Const ADS_NAME_TYPE_1779 = 1
> > > Const ADS_NAME_TYPE_NT4 = 3
> > >
> > > Dim Translate As New ActiveDs.NameTranslate
> > > Dim strUser As String
> > >
> > > 'We want to chat to a GC server, any one will do
> > > Translate.Init(ADS_NAME_INITTYPE_GC, "")
> > > 'Pass in the FQDN name of the object
> > > Translate.Set(ADS_NAME_TYPE_1779, Mid(strUserName, 8)) <--
> > > the call doesnt
> > > like the LDAP:// on the front, so strip it
> > > 'Get back the NT v4 Equivalent
> > > strUser = Translate.Get(ADS_NAME_TYPE_NT4)
> > > Translate = Nothing
> > >
> > > strUser now = the DOMAIN\UserName pair
> > >
> > > You can easily go the other way, ie pass in the
> > > Domain\username pair, and
> > > get back the LDAP path. Its all in the online doco, just do a
> > > search for
> > > NameTranslate
> > >
> > > Very cool actually, was hacking around trying to pull apart
> > > LDAP strings and
> > > massage them myself, this is MUCH easier (and faster)
> > >
> > > HTH
> > >
> > > Glenn
> > > (lucky you asked today, worked out how to to this last 
> night *grin*)
> > >
> > >
> > > ----- Original Message -----
> > > From: "Pablo Curello" <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Tuesday, August 05, 2003 9:44 PM
> > > Subject: RE: [ActiveDir] Connection String
> > >
> > >
> > > That's right, but what if the user Pablo Curello is inside an
> > > organizational
> > > group ?
> > > In that case, the LDAP string should be (for example):
> > > "LDAP://cn=Pablo
> > > Curello, ou=Sales, dc=yourdomain, dc=com".
> > > It doesn´t work with: "LDAP://cn=Pablo Curello, 
> > dc=yourdomain, dc=com"
> > > Thanks.
> > >
> > > -----Original Message-----
> > > From: Costanzo, Ray [mailto:[EMAIL PROTECTED]
> > > Sent: Monday, August 04, 2003 2:34 PM
> > > To: [EMAIL PROTECTED]
> > >
> > > I believe that you mean DOMAIN\Username, and if so:
> > >
> > > Function GetFullName(sUser)
> > > Dim sUsername, sDomain
> > > sUserInfo = Split(sUser, "\")
> > > sDomain = sUserInfo(0)
> > > sUsername = sUserInfo(1)
> > > Set oUser = GetObject("WinNT://" & sDomain & "/" & sUsername
> > > & ",user")
> > >     GetFullName = oUser.Fullname
> > >     Set oUser = Nothing
> > > End Function
> > >
> > > That will give you the full name, such as:  "Curello\, Pablo"
> > >
> > > And then you can use:
> > >
> > > sFullname = GetFullName("pcurello")
> > > sLDAP = "LDAP://cn="; & sFullname & ",dc=yourdomain,dc=com"
> > >
> > > How you get the dc= part from the oldschool netbios name, 
> > I'm not sure
> > > though.  And I can't translate this to C for you.  :]
> > >
> > > Ray at work
> > >
> > >
> > > -----Original Message-----
> > > From: Pablo Curello [mailto:[EMAIL PROTECTED]
> > >
> > >
> > >
> > > Hello all.
> > > Does anybody know how to transform a user's identity
> > > "DOMAIN/USERNAME" to an
> > > ldap connection string "CN=name, DC=..." ?
> > > I know how to do it in COM (C++) using IADsNameTranslate
> > > interface, but now
> > > I´m using C#.
> > > Thanks.
> > >
> > >
> > > **************************************************************
> > > **************
> > > ******************************
> > > The information contained in this e-mail message is intended
> > > only for the
> > > personal and confidential use
> > > of the recipient(s) named above.  Distribution, publication, or
> > > retransmission of this message is strictly
> > > prohibited.  This message may be a bank to client
> > > communication and as such
> > > is priviliged and confidential.
> > > If the reader of this message is not the intended recipient
> > > or an agent
> > > responsible for delivering it to the
> > > intended recipient, you are hereby notified that you have
> > > received this
> > > document in error and that any
> > > review, dissemination, distribution, or copying of this
> > > message is strictly
> > > prohibited.  If you have received
> > > this communication in error, please notify us immediately by
> > > e-mail, and
> > > delete the original message.
> > >
> > > The sender of this e-mail specifically "opts-out" of the 
> Electronic
> > > Signatures and Global and National
> > > Commerce Act (E-Sign) and any and all similar state and 
> > federal acts.
> > > Accordingly, but without limitation,
> > > any and all documents, contracts, and ageements must contain
> > > a handwritten
> > > signature of the sender to
> > > be legal, valid, and enforceable.
> > > **************************************************************
> > > **************
> > > ******************************
> > >
> > > List info   : http://www.activedir.org/mail_list.htm
> > > List FAQ    : http://www.activedir.org/list_faq.htm
> > > List archive:
> > > http://www.mail-archive.com/activedir%> 40mail.activedir.org/
> > >
> > > List info   :
> > > http://www.activedir.org/mail_list.htm
> > > List FAQ    : http://www.activedir.org/list_faq.htm
> > > List archive:
> > > http://www.mail-archive.com/activedir%> 40mail.activedir.org/
> > >
> > >
> > > List info   :
> > > http://www.activedir.org/mail_list.htm
> > > List FAQ    : http://www.activedir.org/list_faq.htm
> > > List archive:
> > > http://www.mail-archive.com/activedir%> 40mail.activedir.org/
> > >
> > List info   : http://www.activedir.org/mail_list.htm
> > List FAQ    : http://www.activedir.org/list_faq.htm
> > List archive: 
> > http://www.mail-archive.com/activedir%> 40mail.activedir.org/
> > 
> > 
> > List info   : 
> > http://www.activedir.org/mail_list.htm
> > List FAQ    : http://www.activedir.org/list_faq.htm
> > List archive: 
> > http://www.mail-archive.com/activedir%> 40mail.activedir.org/
> > 
> List info   : http://www.activedir.org/mail_list.htm
> List FAQ    : http://www.activedir.org/list_faq.htm
> List archive: 
> http://www.mail-archive.com/activedir%> 40mail.activedir.org/
> 
List info   : http://www.activedir.org/mail_list.htm
List FAQ    : http://www.activedir.org/list_faq.htm
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/

Reply via email to