Acknowledgements Part1 Chapter 1:using the Active Directory Library How the Active Directory Library Is Structured How the ACtive Directory Library Is Designed Chapter2:What’s In This Volume? Chapter6:Using ADSI Chapter7:ADSI Scripting Tutorial Cahapter8:Implementing ADSI Providers Chatper9;ADSI Exchange Group Policy Programming Chapter10:Group Policy Programming Guide Chapter11:Group Policy Reference Chapter3:Using Microsoft Reference Resources The Microsoft Developer Network Comparing MSDN with MSDN Online MSDN Subscriptions MSDN Library Subscription MSDN Professional Subscription MSDN Unniversal Subscription Pruchasing an MSDN Subsctiption Using MSDN Navgating MSDN Quick tips Using MSDN Online MSDN Online Features MSDN Online Registered Users The Windows Programming Reference Series Chapter4:Finding the Developer Resources You Need Developer support Online Resources Learning Products Conferences Other Resources Chapter5:What You Need to Know First About ADSI ADSI Programmer’s Guide Assumptions Multiple Directory Services Who Will Use ADSI? Directory Services Today Benefits of Using ADSI ADSI Architecture ADSI Objects Namespacs ADSI Provider ADSI Schema Model Programming Language Support Further Reading on ADSI and Related Topics PART2 Chapter 6:Using ADSI Binding to an ADSI Object Binding String WinNT Binding String LDAP Binding String Binding Types Specific to Active Directory binding Programmatically Using an ADSI Interface Using ADSI Functions to Bind Directly to an Object Using an ActiveX Data Object to Bind to ADSI Providers Connection Caching Accessing and manipulating Data with ADSI ADSI Properties and Attributes What are ProPerties? Properties vs.Attributes The ADSI Property Cache Single vs.Multiple Value Attributes Active Directory Operational Tttributes The IADs and IDirectoryObject Interfaces Using the IADSinterfaces Using the IDirectoryObject Interface Accessing Attributes with ADSI The Get method Tjhe GetEx Method The GetInfo Method Optimization Using GetInfoEx Accessing Attributes with the IdirectoryObject Interface Modifying Attributes with ADSI The Put Method The PutEx Method The SetInfo Method Modifying Attributes with the IDirectoryObject Interface Accessing the Property Cache Directly with the IADsPropery Interfaces ADSI Attribute Syntax Mapping Active Directory Syntax to ADSI Syntxax Mapping NDS Syntax to ADSI Syntax Using the ADSI Schema Collections and Groups Enumerating ADSI Objects Enumeration Enumeration Helper Functions ADsBuildEnumerator ADsFreeEnumerator Searching Active Directory Scope of Query DEpth of Query Performance and handling Large Result Sets What Makes a Fast Query? Processing a Result Set SEarch Filter Syntax Dialect Query Interfaces Searching with IDirectorySearch Searching with ActiveX Data Objects(ADO) Searching with OLE DB Distributed Query ADSI Security Model Atuthentication Access Control Creating a Security Descriptor Object Enumerating the ACLs on an ADSI Object ADSI EXtensions ADSI Extension Architecture Early Binding Support Getting ADSI Interfaces from Your Extension ADSI Extension Type libraries ADSI and Extensions:What’s Happening Under the Hook? Late Binding Support IADsExtension Interface IADsExtension Usage Supporting Dual or Dispatch Interfaces Late Binding :What’s Happenging Under the Hood? Revisiting COM Aggregation Rules with ADsi Extensions What Does a Client See? Resolution of Multiple Aggregation Components Supporting the Same Interface Lage Binding vs.Vtable Access in the ADSI EXtension Model Resolution of Function/Property Name Conflicts in automation in Extension Example Code for Resolving Function Nmae Conflicts More on the Resolution of Automation Conflicts:Same Function Name but Different Parameters Using ADSI with NDS Providers SEtting up Gateway and Client Services for Netware NDS Example code Using ADSI with NWCOMPAT Providers Setting Up GateWway and Client Services for Netware3.X NWCOMPAT Example Code ADSI Utility Interfaces IADsDEleteOps Interface IADsObjectOptions Interface IADsPathname Interface IADsNameTranslate Interface Programming ADSI with JAVA/COM Chapter7:ADSI Scripting Tutorial What You Should Know Before Reading This Tutorial Basic ADSI Binding Getting and Setting properties Containers and Children High-Level Objects ADS Namespaces Container Domains Other High-level Objects Groups and Users Groups Listing Groups Creating Groups Removing Groups Users Listing Users Creating Users Removing users Modifying User Properties Associating Users With Groups Errors and Error Trapping How to Trap ADSI Errors Common Errors Chatper8:Implementing ADSI Providers Provider Minimum Requirements Core Implementation Optional Implementatin Custom ProPerties Dual Interfaces Provider OverView ADSI Component Interaction Schema Interfaces Scheam Extensions Enumerating Container Objects Provider Registry Information Support Queries Implementation Issues for ADSI Providers Collections About Dispatch IDs Type Information and Type Libraries Thread Safety Object Locking Property Names Within a Schema Primay interface ADSI Example Provider Component Installing the Example Provider Component Directory Definition Schema Management Bindig to an Active Directory Object Enumerator Objects Code Overview Code Details CCLSOBJ.CPP CDISPMGR.CPP CENUMNS.CPP CENUMSCH.CPP CENUMOBJ.CPP CENUMVAR.CPP CGENOBJ.CPP CORE.CPP CNAMCF.CPP CNAMESP.CPP COMMON.CPP CPRPOBJ.CPP CPROPS.CPP CPROV.CPP CPROVCF.CPP CSCHOBJ.CPP GETOBJ.CPP GLOBALS.CPP GUID.CPP LIBMAIN.CPP MEMORY.CPP OBJECT.CPP PROPERTY.CPP PARSE.CPP PACK.CPP REGDSAPI.CPP SMPOPER.CPP REGDSAPI.CPP SMPOPER.CPP STDFACT.CPP Chapter9:ADSI Exchange About ADSI Exchange Limitations of ADSI The Exchange Server Directory The EXchange Server Schema Schema Attributes for Directories ADsPath Using ADSI Exchange Viewing and Modifying the Exchange Server Schema Setting Class Attributes Changing the Access Category for a Schema Attribute Creating a Definition for a Schema Attribute Viewing the Raw Properties of an Exchange Object Creating an Exchange mailbox Setting the Security Descriptor on an Exchange Mailbox Manipulating Security Descriptor and SIDs Example Code for Getting the SID Example Code for Setting Security Descriptors Deleting a Mailbox Object Creating a Custom Recipient Creating Recipients Container Example Code for Recalculating the Hierarchy in the Exchange Eirectory Service Getting the Organization and Site Name from a Server Listing the Exchange Server Version of all the Servers in the Organization Finding the Home Server of a Mailbox Retireving E-Mail Addresses Accessing Hidden or Deleted Entries Retrieving Changes Made to the Directory Service Creating a Distribution List from the Results of a Query Getting or Modifying Message Size Using LDAP Error Codes to Troubleshoot Problems Chapter10:Group Policy Programming About Group Policy Group Policy Architecture Group Policy Object Group Policy Management Applying Group Policy Providing Policy for Your Applications Policy Data Storage Policy User Interface Policy Events Adhering to System Policy Settings Using Group Policy Implementing Policy on the Server Implementing Policy on the Client Creating a Policy Callback Function Registering a Policy Callback Function Chapter11:Group Policy Reference Group Policy Functions Group Policy Structures Group Policy Interfaces IUnknown methods IGPEinformation Methods IUnknown Methods IGroupPolicyObjecct Methods Group Policy File formats Registry Policy File Format Administrative Template File Format Comments and Strings CHECKBOX Part Type COMBOBOX Part Type DROPDOWNLIST Part Type EDITTTEXT Part Type LISTBOX Part Type NUMBERIC Part Type TEXT Part Type Part 3--Glossary and Indexes Glossary Index1:Active Directory Programmer’s Guide Coverage Index2:Active Directory Reference-Alphabetical Listing Index3:ADSI,ADSI Exchange ,and Group Policy Programmer’s Guides Coverage Index4:ADSI Reference-Alphabetical Listing