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/