2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * PURPOSE: System setup
5 * FILE: dll/win32/syssetup/security.c
9 /* INCLUDES *****************************************************************/
17 /* FUNCTIONS ****************************************************************/
20 SetAccountDomain(LPCWSTR DomainName
,
23 PPOLICY_ACCOUNT_DOMAIN_INFO OrigInfo
= NULL
;
24 POLICY_ACCOUNT_DOMAIN_INFO Info
;
25 LSA_OBJECT_ATTRIBUTES ObjectAttributes
;
26 LSA_HANDLE PolicyHandle
;
29 if (DomainSid
!= NULL
)
30 SamSetDomainSid (DomainSid
);
32 memset(&ObjectAttributes
, 0, sizeof(LSA_OBJECT_ATTRIBUTES
));
33 ObjectAttributes
.Length
= sizeof(LSA_OBJECT_ATTRIBUTES
);
35 Status
= LsaOpenPolicy(NULL
,
39 if (Status
!= STATUS_SUCCESS
)
41 DPRINT("LsaOpenPolicy failed (Status: 0x%08lx)\n", Status
);
45 Status
= LsaQueryInformationPolicy(PolicyHandle
,
46 PolicyAccountDomainInformation
,
48 if (Status
== STATUS_SUCCESS
&& OrigInfo
!= NULL
)
50 if (DomainName
== NULL
)
52 Info
.DomainName
.Buffer
= OrigInfo
->DomainName
.Buffer
;
53 Info
.DomainName
.Length
= OrigInfo
->DomainName
.Length
;
54 Info
.DomainName
.MaximumLength
= OrigInfo
->DomainName
.MaximumLength
;
58 Info
.DomainName
.Buffer
= (LPWSTR
)DomainName
;
59 Info
.DomainName
.Length
= wcslen(DomainName
) * sizeof(WCHAR
);
60 Info
.DomainName
.MaximumLength
= Info
.DomainName
.Length
+ sizeof(WCHAR
);
63 if (DomainSid
== NULL
)
64 Info
.DomainSid
= OrigInfo
->DomainSid
;
66 Info
.DomainSid
= DomainSid
;
70 Info
.DomainName
.Buffer
= (LPWSTR
)DomainName
;
71 Info
.DomainName
.Length
= wcslen(DomainName
) * sizeof(WCHAR
);
72 Info
.DomainName
.MaximumLength
= Info
.DomainName
.Length
+ sizeof(WCHAR
);
73 Info
.DomainSid
= DomainSid
;
76 Status
= LsaSetInformationPolicy(PolicyHandle
,
77 PolicyAccountDomainInformation
,
79 if (Status
!= STATUS_SUCCESS
)
81 DPRINT("LsaSetInformationPolicy failed (Status: 0x%08lx)\n", Status
);
85 LsaFreeMemory(OrigInfo
);
87 LsaClose(PolicyHandle
);