889{
904
905 TRACE(
"SampInitializeSAM() called\n");
906
908
909
911 L"\\Registry\\Machine\\SAM",
913 &hSamKey);
915 {
916 ERR(
"Failed to open the SAM key (Status: 0x%08lx)\n",
Status);
918 }
919
920
922 &hServerKey);
924 {
926 goto done;
927 }
928
929
931 if (pBuiltinSid ==
NULL)
932 {
933 ERR(
"Failed to allocate the Builtin Domain SID\n");
935 goto done;
936 }
937
940
941
943 if (pInteractiveSid ==
NULL)
944 {
945 ERR(
"Failed to allocate the Interactive SID\n");
947 goto done;
948 }
949
952
953
956 {
957 ERR(
"Failed to allocate the Authenticated User SID\n");
959 goto done;
960 }
961
964
965
968 {
969 ERR(
"SampGetAccountDomainInfo failed (Status %08lx)\n",
Status);
971 goto done;
972 }
973
975
976
980 pBuiltinSid,
982 &hBuiltinDomainKey);
984 {
986 goto done;
987 }
988
989
992
997
998
1001
1006
1007
1010
1015
1016
1019
1024
1026 {
1027
1030
1035 }
1036
1037
1040
1045
1046
1049
1054
1055
1058
1063
1064
1067
1072
1074 {
1075
1078
1083
1084
1087
1092 }
1093
1094
1098 {
1102
1104 }
1105
1106
1110 {
1114
1116 }
1117
1118
1121 pInteractiveSid);
1122
1123
1127
1128
1134 &hAccountDomainKey);
1136 {
1138 goto done;
1139 }
1140
1141
1144
1149
1150
1153
1160
1161
1165
1166
1169
1176
1177
1181
1182done:
1183 if (AccountDomainInfo)
1185
1188
1189 if (pInteractiveSid)
1190 RtlFreeHeap(RtlGetProcessHeap(), 0, pInteractiveSid);
1191
1192 if (pBuiltinSid)
1194
1199
1200 TRACE(
"SampInitializeSAM() done\n");
1201
1202 return bResult;
1203}
static PSID pAuthenticatedUserSid
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define NT_SUCCESS(StatCode)
NTSTATUS WINAPI LsaFreeMemory(IN PVOID Buffer)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
NTSTATUS SampRegCloseKey(IN OUT PHANDLE KeyHandle)
NTSTATUS SampRegOpenKey(IN HANDLE ParentKeyHandle, IN LPCWSTR KeyName, IN ACCESS_MASK DesiredAccess, OUT PHANDLE KeyHandle)
#define IDS_ALIAS_REPLICATOR_COMMENT
#define IDS_ALIAS_ADMINISTRATORS_COMMENT
#define IDS_ALIAS_USERS_COMMENT
#define IDS_ALIAS_BACKUP_OPS_COMMENT
#define IDS_ALIAS_REPLICATOR_NAME
#define IDS_ALIAS_NETWORK_CONFIGURATION_OPS_NAME
#define IDS_ALIAS_POWER_USERS_NAME
#define IDS_ALIAS_USERS_NAME
#define IDS_ALIAS_LOGGING_USERS_COMMENT
#define IDS_ALIAS_ADMINISTRATORS_NAME
#define IDS_ALIAS_LOGGING_USERS_NAME
#define IDS_ALIAS_PRINT_OPS_NAME
#define IDS_USER_ADMINISTRATOR_NAME
#define IDS_ALIAS_GUESTS_COMMENT
#define IDS_USER_GUEST_COMMENT
#define IDS_ALIAS_MONITORING_USERS_NAME
#define IDS_ALIAS_BACKUP_OPS_NAME
#define IDS_ALIAS_POWER_USERS_COMMENT
#define IDS_ALIAS_PRINT_OPS_COMMENT
#define IDS_USER_ADMINISTRATOR_COMMENT
#define IDS_ALIAS_NETWORK_CONFIGURATION_OPS_COMMENT
#define IDS_GROUP_NONE_COMMENT
#define IDS_ALIAS_GUESTS_NAME
#define IDS_ALIAS_MONITORING_USERS_COMMENT
#define IDS_ALIAS_REMOTE_DESKTOP_USERS_COMMENT
#define IDS_USER_GUEST_NAME
#define IDS_ALIAS_REMOTE_DESKTOP_USERS_NAME
#define IDS_DOMAIN_BUILTIN_NAME
#define IDS_GROUP_NONE_NAME
INT SampLoadString(HINSTANCE hInstance, UINT uId, LPWSTR lpBuffer, INT nBufferMax)
static NTSTATUS SampSetupCreateDomain(IN HANDLE hServerKey, IN LPCWSTR lpKeyName, IN LPCWSTR lpDomainName, IN PSID lpDomainSid, IN BOOLEAN bBuiltinDomain, OUT HANDLE *lpDomainKey)
static NTSTATUS SampSetupCreateServer(IN HANDLE hSamKey, OUT HANDLE *lpServerKey)
static NTSTATUS SampSetupCreateGroupAccount(HANDLE hDomainKey, LPCWSTR lpAccountName, LPCWSTR lpComment, ULONG ulRelativeId)
static NTSTATUS SampSetupCreateAliasAccount(HANDLE hDomainKey, LPCWSTR lpAccountName, LPCWSTR lpDescription, ULONG ulRelativeId)
NTSTATUS SampGetAccountDomainInfo(PPOLICY_ACCOUNT_DOMAIN_INFO *AccountDomainInfo)
static NTSTATUS SampSetupAddMemberToGroup(IN HANDLE hDomainKey, IN ULONG GroupId, IN ULONG MemberId)
static BOOL SampSetupAddMemberToAlias(HKEY hDomainKey, ULONG AliasId, PSID MemberSid)
SID_IDENTIFIER_AUTHORITY SecurityNtAuthority
static NTSTATUS SampSetupCreateUserAccount(HANDLE hDomainKey, LPCWSTR lpAccountName, LPCWSTR lpComment, PSID lpDomainSid, ULONG ulRelativeId, ULONG UserAccountControl)
static const WCHAR szComment[]
static PSID AppendRidToSid(PSID SrcSid, ULONG Rid)
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(_In_ PSID Sid, _In_ ULONG SubAuthority)
NTSYSAPI ULONG NTAPI RtlLengthRequiredSid(IN ULONG SubAuthorityCount)
#define KEY_CREATE_SUB_KEY
#define KEY_ENUMERATE_SUB_KEYS
NTSYSAPI NTSTATUS NTAPI RtlInitializeSid(IN OUT PSID Sid, IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount)
#define USER_NORMAL_ACCOUNT
#define USER_DONT_EXPIRE_PASSWORD
#define USER_ACCOUNT_DISABLED
static const WCHAR szName[]
NT_PRODUCT_TYPE SampProductType
#define DOMAIN_ALIAS_RID_USERS
#define DOMAIN_ALIAS_RID_GUESTS
#define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS
#define SECURITY_BUILTIN_DOMAIN_RID
#define DOMAIN_USER_RID_ADMIN
#define SECURITY_INTERACTIVE_RID
#define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS
#define DOMAIN_ALIAS_RID_MONITORING_USERS
#define SECURITY_AUTHENTICATED_USER_RID
#define DOMAIN_ALIAS_RID_LOGGING_USERS
#define DOMAIN_USER_RID_GUEST
#define DOMAIN_ALIAS_RID_BACKUP_OPS
#define DOMAIN_ALIAS_RID_PRINT_OPS
#define DOMAIN_ALIAS_RID_REPLICATOR
#define DOMAIN_ALIAS_RID_POWER_USERS
#define DOMAIN_ALIAS_RID_ADMINS
#define DOMAIN_GROUP_RID_USERS