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