2 * Copyright 2005 Francois Gouget
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 ADS_RIGHT_DS_CREATE_CHILD
= 0x00000001,
24 ADS_RIGHT_DS_DELETE_CHILD
= 0x00000002,
25 ADS_RIGHT_ACTRL_DS_LIST
= 0x00000004,
26 ADS_RIGHT_DS_SELF
= 0x00000008,
27 ADS_RIGHT_DS_READ_PROP
= 0x00000010,
28 ADS_RIGHT_DS_WRITE_PROP
= 0x00000020,
29 ADS_RIGHT_DS_DELETE_TREE
= 0x00000040,
30 ADS_RIGHT_DS_LIST_OBJECT
= 0x00000080,
31 ADS_RIGHT_DS_CONTROL_ACCESS
= 0x00000100,
33 ADS_RIGHT_DELETE
= 0x00010000,
34 ADS_RIGHT_READ_CONTROL
= 0x00020000,
35 ADS_RIGHT_WRITE_DAC
= 0x00040000,
36 ADS_RIGHT_WRITE_OWNER
= 0x00080000,
37 ADS_RIGHT_SYNCHRONIZE
= 0x00100000,
38 ADS_RIGHT_ACCESS_SYSTEM_SECURITY
= 0x00200000,
40 ADS_RIGHT_GENERIC_ALL
= 0x10000000,
41 ADS_RIGHT_GENERIC_EXECUTE
= 0x20000000,
42 ADS_RIGHT_GENERIC_WRITE
= 0x40000000,
43 ADS_RIGHT_GENERIC_READ
= 0x80000000
48 ADS_SECURE_AUTHENTICATION
= 0x1,
49 ADS_USE_ENCRYPTION
= 0x2,
51 ADS_READONLY_SERVER
= 0x4,
52 ADS_PROMPT_CREDENTIALS
= 0x8,
53 ADS_NO_AUTHENTICATION
= 0x10,
55 ADS_USE_SIGNING
= 0x40,
56 ADS_USE_SEALING
= 0x80,
57 ADS_USE_DELEGATION
= 0x100,
58 ADS_SERVER_BIND
= 0x200,
59 ADS_NO_REFERRAL_CHASING
= 0x400,
60 ADS_AUTH_RESERVED
= 0x80000000
61 } ADS_AUTHENTICATION_ENUM
;
63 /*****************************************************************************
64 * IADsContainer interface
68 uuid(001677d0
-fd16
-11ce
-abc4
-02608c9e7553
)
70 interface IADsContainer
: IDispatch
72 [propget] HRESULT Count
(
73 [out, retval] long *retval);
74 [propget, restricted] HRESULT _NewEnum
(
75 [out, retval] IUnknown
**retval);
76 [propget] HRESULT Filter
(
77 [out, retval] VARIANT *pvFilter
);
78 [propput] HRESULT Filter
(
79 [in] VARIANT vFilter
);
80 [propget] HRESULT Hints
(
81 [out, retval] VARIANT *pvHints
);
82 [propput] HRESULT Hints
(
85 [in] BSTR bstrClassName
,
86 [in] BSTR bstrRelativeName
,
87 [out, retval] IDispatch
**ppObject
);
89 [in] BSTR bstrClassName
,
90 [in] BSTR bstrRelativeName
,
91 [out, retval] IDispatch
**ppObject
);
93 [in] BSTR bstrClassName
,
94 [in] BSTR bstrRelativeName
);
96 [in] BSTR bstrSourceName
,
97 [in] BSTR bstrNewName
,
98 [out, retval] IDispatch
**ppObject
);
100 [in] BSTR bstrSourceName
,
101 [in] BSTR bstrNewName
,
102 [out, retval] IDispatch
**ppObject
);
105 /*****************************************************************************
110 uuid(FD8256D0
-FD15
-11CE
-ABC4
-02608C9E7553
),
114 interface IADs
: IDispatch
116 [id(0x00000002), propget]
117 HRESULT Name
([out, retval] BSTR* retval);
119 [id(0x00000003), propget]
120 HRESULT Class
([out, retval] BSTR* retval);
122 [id(0x00000004), propget]
123 HRESULT GUID
([out, retval] BSTR* retval);
125 [id(0x00000005), propget]
126 HRESULT ADsPath
([out, retval] BSTR* retval);
128 [id(0x00000006), propget]
129 HRESULT Parent
([out, retval] BSTR* retval);
131 [id(0x00000007), propget]
132 HRESULT Schema
([out, retval] BSTR* retval);
141 HRESULT Get
([in] BSTR bstrName
, [out, retval] VARIANT* pvProp
);
144 HRESULT Put
([in] BSTR bstrName
, [in] VARIANT vProp
);
147 HRESULT GetEx
([in] BSTR bstrName
, [out, retval] VARIANT* pvProp
);
150 HRESULT PutEx
([in] long lnControlCode
, [in] BSTR bstrName
, [in] VARIANT vProp
);
153 HRESULT GetInfoEx
( [in] VARIANT vProperties
, [in] long lnReserved
);
156 /*****************************************************************************
157 * IADsMembers interface
161 uuid(451A0030
-72EC
-11CF
-B03B
-00AA006E0975
),
165 interface IADsMembers
: IDispatch
167 [id(0x00000002), propget]
168 HRESULT Count
([out, retval] long* plCount
);
170 [id(0xfffffffc), propget]
171 HRESULT _NewEnum
([out, retval] IUnknown
** ppEnumerator
);
173 [id(0x00000003), propget]
174 HRESULT Filter
([out, retval] VARIANT* pvFilter
);
176 [id(0x00000003), propput]
177 HRESULT Filter
([in] VARIANT pvFilter
);
180 /*****************************************************************************
181 * IADsGroup interface
185 uuid(27636B00
-410F
-11CF
-B1FF
-02608C9E7553
),
189 interface IADsGroup
: IADs
{
190 [id(0x0000000f), propget]
191 HRESULT Description
([out, retval] BSTR* retval);
193 [id(0x0000000f), propput]
194 HRESULT Description
([in] BSTR retval);
197 HRESULT Members
([out, retval] IADsMembers
** ppMembers
);
200 HRESULT IsMember
([in] BSTR bstrMember
, [out, retval] VARIANT_BOOL* bMember
);
203 HRESULT Add
([in] BSTR bstrNewItem
);
206 HRESULT Remove
([in] BSTR bstrItemToBeRemoved
);
209 /*****************************************************************************
214 uuid(3E37E320
-17E2
-11CF
-ABC4
-02608C9E7553
),
218 interface IADsUser
: IADs
220 [id(0x00000035), propget]
221 HRESULT BadLoginAddress
([out, retval] BSTR* retval);
223 [id(0x00000036), propget]
224 HRESULT BadLoginCount
([out, retval] long* retval);
226 [id(0x00000038), propget]
227 HRESULT LastLogin
([out, retval] DATE
* retval);
229 [id(0x00000039), propget]
230 HRESULT LastLogoff
([out, retval] DATE
* retval);
232 [id(0x0000003a), propget]
233 HRESULT LastFailedLogin
([out, retval] DATE
* retval);
235 [id(0x0000003b), propget]
236 HRESULT PasswordLastChanged
([out, retval] DATE
* retval);
238 [id(0x0000000f), propget]
239 HRESULT Description
([out, retval] BSTR* retval);
241 [id(0x0000000f), propput]
242 HRESULT Description
([in] BSTR retval);
244 [id(0x00000013), propget]
245 HRESULT Division
([out, retval] BSTR* retval);
247 [id(0x00000013), propput]
248 HRESULT Division
([in] BSTR retval);
250 [id(0x0000007a), propget]
251 HRESULT Department
([out, retval] BSTR* retval);
253 [id(0x0000007a), propput]
254 HRESULT Department
([in] BSTR retval);
256 [id(0x00000014), propget]
257 HRESULT EmployeeID
([out, retval] BSTR* retval);
259 [id(0x00000014), propput]
260 HRESULT EmployeeID
([in] BSTR retval);
262 [id(0x00000017), propget]
263 HRESULT FullName
([out, retval] BSTR* retval);
265 [id(0x00000017), propput]
266 HRESULT FullName
([in] BSTR retval);
268 [id(0x00000016), propget]
269 HRESULT FirstName
([out, retval] BSTR* retval);
271 [id(0x00000016), propput]
272 HRESULT FirstName
([in] BSTR retval);
274 [id(0x00000019), propget]
275 HRESULT LastName
([out, retval] BSTR* retval);
277 [id(0x00000019), propput]
278 HRESULT LastName
([in] BSTR retval);
280 [id(0x0000001b), propget]
281 HRESULT OtherName
([out, retval] BSTR* retval);
283 [id(0x0000001b), propput]
284 HRESULT OtherName
([in] BSTR retval);
286 [id(0x00000072), propget]
287 HRESULT NamePrefix
([out, retval] BSTR* retval);
289 [id(0x00000072), propput]
290 HRESULT NamePrefix
([in] BSTR retval);
292 [id(0x00000073), propget]
293 HRESULT NameSuffix
([out, retval] BSTR* retval);
295 [id(0x00000073), propput]
296 HRESULT NameSuffix
([in] BSTR retval);
298 [id(0x00000024), propget]
299 HRESULT Title
([out, retval] BSTR* retval);
301 [id(0x00000024), propput]
302 HRESULT Title
([in] BSTR retval);
304 [id(0x0000001a), propget]
305 HRESULT Manager
([out, retval] BSTR* retval);
307 [id(0x0000001a), propput]
308 HRESULT Manager
([in] BSTR retval);
310 [id(0x00000020), propget]
311 HRESULT TelephoneHome
([out, retval] VARIANT* retval);
313 [id(0x00000020), propput]
314 HRESULT TelephoneHome
([in] VARIANT retval);
316 [id(0x00000021), propget]
317 HRESULT TelephoneMobile
([out, retval] VARIANT* retval);
319 [id(0x00000021), propput]
320 HRESULT TelephoneMobile
([in] VARIANT retval);
322 [id(0x00000022), propget]
323 HRESULT TelephoneNumber
([out, retval] VARIANT* retval);
325 [id(0x00000022), propput]
326 HRESULT TelephoneNumber
([in] VARIANT retval);
328 [id(0x00000011), propget]
329 HRESULT TelephonePager
([out, retval] VARIANT* retval);
331 [id(0x00000011), propput]
332 HRESULT TelephonePager
([in] VARIANT retval);
334 [id(0x00000010), propget]
335 HRESULT FaxNumber
([out, retval] VARIANT* retval);
337 [id(0x00000010), propput]
338 HRESULT FaxNumber
([in] VARIANT retval);
340 [id(0x0000001c), propget]
341 HRESULT OfficeLocations
([out, retval] VARIANT* retval);
343 [id(0x0000001c), propput]
344 HRESULT OfficeLocations
([in] VARIANT retval);
346 [id(0x0000001e), propget]
347 HRESULT PostalAddresses
([out, retval] VARIANT* retval);
349 [id(0x0000001e), propput]
350 HRESULT PostalAddresses
([in] VARIANT retval);
352 [id(0x0000001f), propget]
353 HRESULT PostalCodes
([out, retval] VARIANT* retval);
355 [id(0x0000001f), propput]
356 HRESULT PostalCodes
([in] VARIANT retval);
358 [id(0x00000075), propget]
359 HRESULT SeeAlso
([out, retval] VARIANT* retval);
361 [id(0x00000075), propput]
362 HRESULT SeeAlso
([in] VARIANT retval);
364 [id(0x00000025), propget]
365 HRESULT AccountDisabled
([out, retval] VARIANT_BOOL* retval);
367 [id(0x00000025), propput]
368 HRESULT AccountDisabled
([in] VARIANT_BOOL retval);
370 [id(0x00000026), propget]
371 HRESULT AccountExpirationDate
([out, retval] DATE
* retval);
373 [id(0x00000026), propput]
374 HRESULT AccountExpirationDate
([in] DATE
retval);
376 [id(0x00000029), propget]
377 HRESULT GraceLoginsAllowed
([out, retval] long* retval);
379 [id(0x00000029), propput]
380 HRESULT GraceLoginsAllowed
([in] long retval);
382 [id(0x0000002a), propget]
383 HRESULT GraceLoginsRemaining
([out, retval] long* retval);
385 [id(0x0000002a), propput]
386 HRESULT GraceLoginsRemaining
([in] long retval);
388 [id(0x0000002b), propget]
389 HRESULT IsAccountLocked
([out, retval] VARIANT_BOOL* retval);
391 [id(0x0000002b), propput]
392 HRESULT IsAccountLocked
([in] VARIANT_BOOL retval);
394 [id(0x0000002d), propget]
395 HRESULT LoginHours
([out, retval] VARIANT* retval);
397 [id(0x0000002d), propput]
398 HRESULT LoginHours
([in] VARIANT retval);
400 [id(0x0000002e), propget]
401 HRESULT LoginWorkstations
([out, retval] VARIANT* retval);
403 [id(0x0000002e), propput]
404 HRESULT LoginWorkstations
([in] VARIANT retval);
406 [id(0x0000002f), propget]
407 HRESULT MaxLogins
([out, retval] long* retval);
409 [id(0x0000002f), propput]
410 HRESULT MaxLogins
([in] long retval);
412 [id(0x00000030), propget]
413 HRESULT MaxStorage
([out, retval] long* retval);
415 [id(0x00000030), propput]
416 HRESULT MaxStorage
([in] long retval);
418 [id(0x00000031), propget]
419 HRESULT PasswordExpirationDate
([out, retval] DATE
* retval);
421 [id(0x00000031), propput]
422 HRESULT PasswordExpirationDate
([in] DATE
retval);
424 [id(0x00000032), propget]
425 HRESULT PasswordMinimumLength
([out, retval] long* retval);
427 [id(0x00000032), propput]
428 HRESULT PasswordMinimumLength
([in] long retval);
430 [id(0x00000033), propget]
431 HRESULT PasswordRequired
([out, retval] VARIANT_BOOL* retval);
433 [id(0x00000033), propput]
434 HRESULT PasswordRequired
([in] VARIANT_BOOL retval);
436 [id(0x00000034), propget]
437 HRESULT RequireUniquePassword
([out, retval] VARIANT_BOOL* retval);
439 [id(0x00000034), propput]
440 HRESULT RequireUniquePassword
([in] VARIANT_BOOL retval);
442 [id(0x0000003c), propget]
443 HRESULT EmailAddress
([out, retval] BSTR* retval);
445 [id(0x0000003c), propput]
446 HRESULT EmailAddress
([in] BSTR retval);
448 [id(0x0000003d), propget]
449 HRESULT HomeDirectory
([out, retval] BSTR* retval);
451 [id(0x0000003d), propput]
452 HRESULT HomeDirectory
([in] BSTR retval);
454 [id(0x0000003e), propget]
455 HRESULT Languages
([out, retval] VARIANT* retval);
457 [id(0x0000003e), propput]
458 HRESULT Languages
([in] VARIANT retval);
460 [id(0x0000003f), propget]
461 HRESULT Profile
([out, retval] BSTR* retval);
463 [id(0x0000003f), propput]
464 HRESULT Profile
([in] BSTR retval);
466 [id(0x00000040), propget]
467 HRESULT LoginScript
([out, retval] BSTR* retval);
469 [id(0x00000040), propput]
470 HRESULT LoginScript
([in] BSTR retval);
472 [id(0x00000041), propget]
473 HRESULT Picture
([out, retval] VARIANT* retval);
475 [id(0x00000041), propput]
476 HRESULT Picture
([in] VARIANT retval);
478 [id(0x00000078), propget]
479 HRESULT HomePage
([out, retval] BSTR* retval);
481 [id(0x00000078), propput]
482 HRESULT HomePage
([in] BSTR retval);
485 HRESULT Groups
([out, retval] IADsMembers
** ppGroups
);
488 HRESULT SetPassword
([in] BSTR NewPassword
);
491 HRESULT ChangePassword
([in] BSTR bstrOldPassword
, [in] BSTR bstrNewPassword
);