9 #define DOMAIN_READ_PASSWORD_PARAMETERS 1
10 #define DOMAIN_WRITE_PASSWORD_PARAMS 2
11 #define DOMAIN_READ_OTHER_PARAMETERS 4
12 #define DOMAIN_WRITE_OTHER_PARAMETERS 8
13 #define DOMAIN_CREATE_USER 16
14 #define DOMAIN_CREATE_GROUP 32
15 #define DOMAIN_CREATE_ALIAS 64
16 #define DOMAIN_GET_ALIAS_MEMBERSHIP 128
17 #define DOMAIN_LIST_ACCOUNTS 256
18 #define DOMAIN_LOOKUP 512
19 #define DOMAIN_ADMINISTER_SERVER 1024
21 #define SAM_SERVER_CONNECT 1
22 #define SAM_SERVER_SHUTDOWN 2
23 #define SAM_SERVER_INITIALIZE 4
24 #define SAM_SERVER_CREATE_DOMAIN 8
25 #define SAM_SERVER_ENUMERATE_DOMAINS 16
26 #define SAM_SERVER_LOOKUP_DOMAIN 32
28 #define USER_READ_GENERAL 1
29 #define USER_READ_PREFERENCES 2
30 #define USER_WRITE_PREFERENCES 4
31 #define USER_READ_LOGON 8
32 #define USER_READ_ACCOUNT 16
33 #define USER_WRITE_ACCOUNT 32
34 #define USER_CHANGE_PASSWORD 64
35 #define USER_FORCE_PASSWORD_CHANGE 128
36 #define USER_LIST_GROUPS 256
37 #define USER_READ_GROUP_INFORMATION 512
38 #define USER_WRITE_GROUP_INFORMATION 1024
40 typedef PVOID SAM_HANDLE
, *PSAM_HANDLE
;
42 typedef enum _USER_INFORMATION_CLASS
44 UserGeneralInformation
= 1,
45 UserPreferencesInformation
,
47 UserLogonHoursInformation
,
48 UserAccountInformation
,
50 UserAccountNameInformation
,
51 UserFullNameInformation
,
52 UserPrimaryGroupInformation
,
54 UserScriptInformation
,
55 UserProfileInformation
,
56 UserAdminCommentInformation
,
57 UserWorkStationsInformation
,
58 UserSetPasswordInformation
,
59 UserControlInformation
,
60 UserExpiresInformation
,
61 UserInternal1Information
,
62 UserInternal2Information
,
63 UserParametersInformation
,
65 UserInternal3Information
,
66 UserInternal4Information
,
67 UserInternal5Information
,
68 UserInternal4InformationNew
,
69 UserInternal5InformationNew
,
70 UserInternal6Information
,
71 UserExtendedInformation
,
72 UserLogonUIInformation
,
73 } USER_INFORMATION_CLASS
, *PUSER_INFORMATION_CLASS
;
75 typedef struct _USER_SET_PASSWORD_INFORMATION
77 UNICODE_STRING Password
;
78 BOOLEAN PasswordExpired
;
79 } USER_SET_PASSWORD_INFORMATION
, *PUSER_SET_PASSWORD_INFORMATION
;
84 SamCloseHandle(IN SAM_HANDLE SamHandle
);
88 SamConnect(IN OUT PUNICODE_STRING ServerName
,
89 OUT PSAM_HANDLE ServerHandle
,
90 IN ACCESS_MASK DesiredAccess
,
91 IN POBJECT_ATTRIBUTES ObjectAttributes
);
95 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle
,
96 IN PUNICODE_STRING AccountName
,
97 IN ACCESS_MASK DesiredAccess
,
98 OUT PSAM_HANDLE UserHandle
,
99 OUT PULONG RelativeId
);
103 SamFreeMemory(IN PVOID Buffer
);
107 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle
,
108 IN PUNICODE_STRING Name
,
113 SamOpenDomain(IN SAM_HANDLE ServerHandle
,
114 IN ACCESS_MASK DesiredAccess
,
116 OUT PSAM_HANDLE DomainHandle
);
120 SamOpenUser(IN SAM_HANDLE DomainHandle
,
121 IN ACCESS_MASK DesiredAccess
,
123 OUT PSAM_HANDLE UserHandle
);
127 SamQueryInformationUser(IN SAM_HANDLE UserHandle
,
128 IN USER_INFORMATION_CLASS UserInformationClass
,
133 SamSetInformationUser(IN SAM_HANDLE UserHandle
,
134 IN USER_INFORMATION_CLASS UserInformationClass
,
139 SamShutdownSamServer(IN SAM_HANDLE ServerHandle
);