IN LPCWSTR lpKeyName,
IN LPCWSTR lpDomainName,
IN PSID lpDomainSid,
+ IN BOOLEAN bBuiltinDomain,
OUT HANDLE *lpDomainKey)
{
SAM_DOMAIN_FIXED_DATA FixedData;
HANDLE hGroupsKey = NULL;
HANDLE hUsersKey = NULL;
HANDLE hNamesKey = NULL;
+ PSECURITY_DESCRIPTOR Sd = NULL;
+ ULONG SdSize = 0;
NTSTATUS Status;
if (lpDomainKey != NULL)
if (!NT_SUCCESS(Status))
goto done;
+ /* Create the server SD */
+ if (bBuiltinDomain == TRUE)
+ Status = SampCreateBuiltinDomainSD(&Sd,
+ &SdSize);
+ else
+ Status = SampCreateAccountDomainSD(&Sd,
+ &SdSize);
+
+ if (!NT_SUCCESS(Status))
+ goto done;
+
+ /* Set SecDesc attribute*/
+ Status = SampRegSetValue(hServerKey,
+ L"SecDesc",
+ REG_BINARY,
+ Sd,
+ SdSize);
+ if (!NT_SUCCESS(Status))
+ goto done;
+
SampRegCloseKey(hNamesKey);
if (lpDomainKey != NULL)
*lpDomainKey = hDomainKey;
done:
+ if (Sd != NULL)
+ RtlFreeHeap(RtlGetProcessHeap(), 0, Sd);
+
if (hAliasesKey != NULL)
SampRegCloseKey(hAliasesKey);
L"Builtin",
szName,
pBuiltinSid,
+ TRUE,
&hBuiltinDomainKey);
if (!NT_SUCCESS(Status))
{
L"Account",
L"",
AccountDomainInfo->DomainSid,
+ FALSE,
&hAccountDomainKey);
if (!NT_SUCCESS(Status))
{