What I need is to get the current users active directry organization unit
and pass that as a variable to LiSP
Ideally I would just load an arx or dll and have a lisp variable to use in a
lisp routine
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using acadApp = Autodesk.AutoCAD.ApplicationServices.Application;
using System.DirectoryServices;
using System.Data;
using System.Text;
public class HelloWorld
{
public static DirectoryEntry getDEBySearchFilter(string filter)
{
try
{
DirectoryEntry rootEntry = new
DirectoryEntry("LDAP://DOMAIN.net/DC=DOMAIN,DC=net");
DirectorySearcher searcher = new DirectorySearcher(rootEntry);
searcher.Filter = filter;
return searcher.FindOne().GetDirectoryEntry();
}
catch (NullReferenceException)
{
throw new ApplicationException("ERROR: " + filter + ": not in
Active Directory");
}
}
[Autodesk.AutoCAD.Runtime.CommandMethod("cmdado")]
public void HelloCommand()
string a =
System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split('\\')[1];
DirectoryEntry de =
getDEBySearchFilter("(&(objectCategory=person)(samAccountName=" + a + "))");
string ouchild = de.Parent.Name.Remove(0, 3);
string ouparent = de.Parent.Parent.Name.Remove(0, 3);
string domain = de.Parent.Parent.Parent.Name.Remove(0, 3);
acadApp.DocumentManager.MdiActiveDocument.Editor.WriteMessage(domain
+ "\\" + ouparent + "\\" + ouchild);
acadApp.UpdateScreen();
}
}
--
Dave