9 #define ALIAS_ADD_MEMBER 0x00000001
10 #define ALIAS_REMOVE_MEMBER 0x00000002
11 #define ALIAS_LIST_MEMBERS 0x00000004
12 #define ALIAS_READ_INFORMATION 0x00000008
13 #define ALIAS_WRITE_ACCOUNT 0x00000010
15 #define ALIAS_READ (STANDARD_RIGHTS_READ |\
18 #define ALIAS_WRITE (STANDARD_RIGHTS_WRITE |\
20 ALIAS_REMOVE_MEMBER |\
23 #define ALIAS_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
24 ALIAS_READ_INFORMATION)
26 #define ALIAS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
28 ALIAS_REMOVE_MEMBER |\
30 ALIAS_READ_INFORMATION |\
33 #define DOMAIN_READ_PASSWORD_PARAMETERS 0x00000001
34 #define DOMAIN_WRITE_PASSWORD_PARAMS 0x00000002
35 #define DOMAIN_READ_OTHER_PARAMETERS 0x00000004
36 #define DOMAIN_WRITE_OTHER_PARAMETERS 0x00000008
37 #define DOMAIN_CREATE_USER 0x00000010
38 #define DOMAIN_CREATE_GROUP 0x00000020
39 #define DOMAIN_CREATE_ALIAS 0x00000040
40 #define DOMAIN_GET_ALIAS_MEMBERSHIP 0x00000080
41 #define DOMAIN_LIST_ACCOUNTS 0x00000100
42 #define DOMAIN_LOOKUP 0x00000200
43 #define DOMAIN_ADMINISTER_SERVER 0x00000400
45 #define DOMAIN_READ (STANDARD_RIGHTS_READ |\
46 DOMAIN_READ_OTHER_PARAMETERS |\
47 DOMAIN_GET_ALIAS_MEMBERSHIP)
49 #define DOMAIN_WRITE (STANDARD_RIGHTS_WRITE |\
50 DOMAIN_WRITE_PASSWORD_PARAMS |\
51 DOMAIN_WRITE_OTHER_PARAMETERS |\
53 DOMAIN_CREATE_GROUP |\
54 DOMAIN_CREATE_ALIAS |\
55 DOMAIN_ADMINISTER_SERVER)
57 #define DOMAIN_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
58 DOMAIN_READ_PASSWORD_PARAMETERS |\
59 DOMAIN_LIST_ACCOUNTS |\
62 #define DOMAIN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
63 DOMAIN_READ_PASSWORD_PARAMETERS |\
64 DOMAIN_WRITE_PASSWORD_PARAMS |\
65 DOMAIN_READ_OTHER_PARAMETERS |\
66 DOMAIN_WRITE_OTHER_PARAMETERS |\
68 DOMAIN_CREATE_GROUP |\
69 DOMAIN_CREATE_ALIAS |\
70 DOMAIN_GET_ALIAS_MEMBERSHIP |\
71 DOMAIN_LIST_ACCOUNTS |\
73 DOMAIN_ADMINISTER_SERVER)
75 #define GROUP_READ_INFORMATION 0x00000001
76 #define GROUP_WRITE_ACCOUNT 0x00000002
77 #define GROUP_ADD_MEMBER 0x00000004
78 #define GROUP_REMOVE_MEMBER 0x00000008
79 #define GROUP_LIST_MEMBERS 0x00000010
81 #define GROUP_READ (STANDARD_RIGHTS_READ |\
84 #define GROUP_WRITE (STANDARD_RIGHTS_WRITE |\
85 GROUP_WRITE_ACCOUNT |\
89 #define GROUP_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
90 GROUP_READ_INFORMATION)
92 #define GROUP_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
93 GROUP_READ_INFORMATION |\
94 GROUP_WRITE_ACCOUNT |\
96 GROUP_REMOVE_MEMBER |\
99 #define SAM_SERVER_CONNECT 0x00000001
100 #define SAM_SERVER_SHUTDOWN 0x00000002
101 #define SAM_SERVER_INITIALIZE 0x00000004
102 #define SAM_SERVER_CREATE_DOMAIN 0x00000008
103 #define SAM_SERVER_ENUMERATE_DOMAINS 0x00000010
104 #define SAM_SERVER_LOOKUP_DOMAIN 0x00000020
106 #define SAM_SERVER_READ (STANDARD_RIGHTS_READ |\
107 SAM_SERVER_ENUMERATE_DOMAINS)
109 #define SAM_SERVER_WRITE (STANDARD_RIGHTS_WRITE |\
110 SAM_SERVER_SHUTDOWN |\
111 SAM_SERVER_INITIALIZE |\
112 SAM_SERVER_CREATE_DOMAIN)
114 #define SAM_SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
115 SAM_SERVER_CONNECT |\
116 SAM_SERVER_LOOKUP_DOMAIN)
118 #define SAM_SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
119 SAM_SERVER_CONNECT |\
120 SAM_SERVER_SHUTDOWN |\
121 SAM_SERVER_INITIALIZE |\
122 SAM_SERVER_CREATE_DOMAIN |\
123 SAM_SERVER_ENUMERATE_DOMAINS |\
124 SAM_SERVER_LOOKUP_DOMAIN)
126 #define USER_READ_GENERAL 0x00000001
127 #define USER_READ_PREFERENCES 0x00000002
128 #define USER_WRITE_PREFERENCES 0x00000004
129 #define USER_READ_LOGON 0x00000008
130 #define USER_READ_ACCOUNT 0x00000010
131 #define USER_WRITE_ACCOUNT 0x00000020
132 #define USER_CHANGE_PASSWORD 0x00000040
133 #define USER_FORCE_PASSWORD_CHANGE 0x00000080
134 #define USER_LIST_GROUPS 0x00000100
135 #define USER_READ_GROUP_INFORMATION 0x00000200
136 #define USER_WRITE_GROUP_INFORMATION 0x00000400
138 #define USER_READ (STANDARD_RIGHTS_READ |\
139 USER_READ_PREFERENCES |\
143 USER_READ_GROUP_INFORMATION)
145 #define USER_WRITE (STANDARD_RIGHTS_WRITE |\
146 USER_WRITE_PREFERENCES |\
147 USER_CHANGE_PASSWORD)
149 #define USER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
151 USER_CHANGE_PASSWORD)
153 #define USER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
155 USER_READ_PREFERENCES |\
156 USER_WRITE_PREFERENCES |\
159 USER_WRITE_ACCOUNT |\
160 USER_CHANGE_PASSWORD |\
161 USER_FORCE_PASSWORD_CHANGE |\
163 USER_READ_GROUP_INFORMATION |\
164 USER_WRITE_GROUP_INFORMATION)
166 typedef PVOID SAM_HANDLE
, *PSAM_HANDLE
;
167 typedef ULONG SAM_ENUMERATE_HANDLE
, *PSAM_ENUMERATE_HANDLE
;
169 typedef struct _SAM_RID_ENUMERATION
173 } SAM_RID_ENUMERATION
, *PSAM_RID_ENUMERATION
;
175 typedef struct _SAM_SID_ENUMERATION
179 } SAM_SID_ENUMERATION
, *PSAM_SID_ENUMERATION
;
181 typedef enum _ALIAS_INFORMATION_CLASS
183 AliasGeneralInformation
= 1,
184 AliasNameInformation
,
185 AliasAdminCommentInformation
186 } ALIAS_INFORMATION_CLASS
, *PALIAS_INFORMATION_CLASS
;
188 typedef struct _SAMPR_ALIAS_GENERAL_INFORMATION
192 UNICODE_STRING AdminComment
;
193 } SAMPR_ALIAS_GENERAL_INFORMATION
, *PSAMPR_ALIAS_GENERAL_INFORMATION
;
195 typedef struct _SAMPR_ALIAS_NAME_INFORMATION
198 } SAMPR_ALIAS_NAME_INFORMATION
, *PSAMPR_ALIAS_NAME_INFORMATION
;
200 typedef struct _SAMPR_ALIAS_ADM_COMMENT_INFORMATION
202 UNICODE_STRING AdminComment
;
203 } SAMPR_ALIAS_ADM_COMMENT_INFORMATION
, *PSAMPR_ALIAS_ADM_COMMENT_INFORMATION
;
206 typedef enum _DOMAIN_INFORMATION_CLASS
208 DomainPasswordInformation
= 1,
209 DomainGeneralInformation
,
210 DomainLogoffInformation
,
211 DomainOemInformation
,
212 DomainNameInformation
,
213 DomainReplicationInformation
,
214 DomainServerRoleInformation
,
215 DomainModifiedInformation
,
216 DomainStateInformation
,
217 DomainUasInformation
,
218 DomainGeneralInformation2
,
219 DomainLockoutInformation
,
220 DomainModifiedInformation2
221 } DOMAIN_INFORMATION_CLASS
;
223 typedef enum _DOMAIN_SERVER_ENABLE_STATE
225 DomainServerEnabled
= 1,
227 } DOMAIN_SERVER_ENABLE_STATE
, *PDOMAIN_SERVER_ENABLE_STATE
;
229 typedef enum _DOMAIN_SERVER_ROLE
231 DomainServerRoleBackup
= 2,
232 DomainServerRolePrimary
233 } DOMAIN_SERVER_ROLE
, *PDOMAIN_SERVER_ROLE
;
235 typedef struct _DOMAIN_NAME_INFORMATION
237 UNICODE_STRING DomainName
;
238 } DOMAIN_NAME_INFORMATION
, *PDOMAIN_NAME_INFORMATION
;
240 typedef enum _USER_INFORMATION_CLASS
242 UserGeneralInformation
= 1,
243 UserPreferencesInformation
,
244 UserLogonInformation
,
245 UserLogonHoursInformation
,
246 UserAccountInformation
,
248 UserAccountNameInformation
,
249 UserFullNameInformation
,
250 UserPrimaryGroupInformation
,
252 UserScriptInformation
,
253 UserProfileInformation
,
254 UserAdminCommentInformation
,
255 UserWorkStationsInformation
,
256 UserSetPasswordInformation
,
257 UserControlInformation
,
258 UserExpiresInformation
,
259 UserInternal1Information
,
260 UserInternal2Information
,
261 UserParametersInformation
,
263 UserInternal3Information
,
264 UserInternal4Information
,
265 UserInternal5Information
,
266 UserInternal4InformationNew
,
267 UserInternal5InformationNew
,
268 UserInternal6Information
,
269 UserExtendedInformation
,
270 UserLogonUIInformation
,
271 } USER_INFORMATION_CLASS
, *PUSER_INFORMATION_CLASS
;
273 typedef struct _USER_SET_PASSWORD_INFORMATION
275 UNICODE_STRING Password
;
276 BOOLEAN PasswordExpired
;
277 } USER_SET_PASSWORD_INFORMATION
, *PUSER_SET_PASSWORD_INFORMATION
;
282 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle
,
287 SamCloseHandle(IN SAM_HANDLE SamHandle
);
291 SamConnect(IN OUT PUNICODE_STRING ServerName
,
292 OUT PSAM_HANDLE ServerHandle
,
293 IN ACCESS_MASK DesiredAccess
,
294 IN POBJECT_ATTRIBUTES ObjectAttributes
);
298 SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle
,
299 IN PUNICODE_STRING AccountName
,
300 IN ACCESS_MASK DesiredAccess
,
301 OUT PSAM_HANDLE AliasHandle
,
302 OUT PULONG RelativeId
);
306 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle
,
307 IN PUNICODE_STRING AccountName
,
308 IN ACCESS_MASK DesiredAccess
,
309 OUT PSAM_HANDLE UserHandle
,
310 OUT PULONG RelativeId
);
314 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle
,
315 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext
,
317 IN ULONG PreferedMaximumLength
,
318 OUT PULONG CountReturned
);
322 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle
,
323 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext
,
325 IN ULONG PreferedMaximumLength
,
326 OUT PULONG CountReturned
);
330 SamFreeMemory(IN PVOID Buffer
);
334 SamGetAliasMembership(IN SAM_HANDLE DomainHandle
,
335 IN ULONG PassedCount
,
337 OUT PULONG MembershipCount
,
338 OUT PULONG
*Aliases
);
342 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle
,
343 OUT PSID
**MemberIds
,
344 OUT PULONG MemberCount
);
348 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle
,
349 IN PUNICODE_STRING Name
,
354 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle
,
356 IN PUNICODE_STRING Names
,
357 OUT PULONG
*RelativeIds
,
358 OUT PSID_NAME_USE
*Use
);
362 SamOpenAlias(IN SAM_HANDLE DomainHandle
,
363 IN ACCESS_MASK DesiredAccess
,
365 OUT PSAM_HANDLE AliasHandle
);
369 SamOpenDomain(IN SAM_HANDLE ServerHandle
,
370 IN ACCESS_MASK DesiredAccess
,
372 OUT PSAM_HANDLE DomainHandle
);
376 SamOpenUser(IN SAM_HANDLE DomainHandle
,
377 IN ACCESS_MASK DesiredAccess
,
379 OUT PSAM_HANDLE UserHandle
);
383 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle
,
384 IN ALIAS_INFORMATION_CLASS AliasInformationClass
,
389 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle
,
390 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
395 SamQueryInformationUser(IN SAM_HANDLE UserHandle
,
396 IN USER_INFORMATION_CLASS UserInformationClass
,
401 SamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle
,
406 SamSetInformationAlias(IN SAM_HANDLE AliasHandle
,
407 IN ALIAS_INFORMATION_CLASS AliasInformationClass
,
412 SamSetInformationDomain(IN SAM_HANDLE DomainHandle
,
413 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
414 IN PVOID DomainInformation
);
418 SamSetInformationUser(IN SAM_HANDLE UserHandle
,
419 IN USER_INFORMATION_CLASS UserInformationClass
,
424 SamShutdownSamServer(IN SAM_HANDLE ServerHandle
);