mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 08:15:41 +00:00
[LSASRV]
Implement LsarCreateAccount. svn path=/trunk/; revision=56452
This commit is contained in:
parent
a450c4e88d
commit
a087b26b8c
3 changed files with 61 additions and 4 deletions
|
@ -27,7 +27,7 @@ add_library(lsasrv SHARED ${SOURCE})
|
||||||
set_module_type(lsasrv win32dll ENTRYPOINT 0 UNICODE)
|
set_module_type(lsasrv win32dll ENTRYPOINT 0 UNICODE)
|
||||||
|
|
||||||
target_link_libraries(lsasrv wine ${PSEH_LIB})
|
target_link_libraries(lsasrv wine ${PSEH_LIB})
|
||||||
add_importlibs(lsasrv rpcrt4 msvcrt kernel32 ntdll)
|
add_importlibs(lsasrv rpcrt4 msvcrt kernel32 advapi32 ntdll)
|
||||||
add_pch(lsasrv lsasrv.h)
|
add_pch(lsasrv lsasrv.h)
|
||||||
add_dependencies(lsasrv psdk)
|
add_dependencies(lsasrv psdk)
|
||||||
add_cd_file(TARGET lsasrv DESTINATION reactos/system32 FOR all)
|
add_cd_file(TARGET lsasrv DESTINATION reactos/system32 FOR all)
|
||||||
|
|
|
@ -310,8 +310,65 @@ NTSTATUS WINAPI LsarCreateAccount(
|
||||||
ACCESS_MASK DesiredAccess,
|
ACCESS_MASK DesiredAccess,
|
||||||
LSAPR_HANDLE *AccountHandle)
|
LSAPR_HANDLE *AccountHandle)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
LSAPR_HANDLE AccountsHandle;
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
LSAPR_HANDLE Account;
|
||||||
|
LPWSTR SidString;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
/* Validate the PolicyHandle */
|
||||||
|
Status = LsapValidateDbObject(PolicyHandle,
|
||||||
|
LsaDbPolicyObject,
|
||||||
|
POLICY_CREATE_ACCOUNT);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("LsapValidateDbObject returned 0x%08lx\n", Status);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open the Accounts object */
|
||||||
|
AccountsHandle = LsapCreateDbObject(PolicyHandle,
|
||||||
|
L"Accounts",
|
||||||
|
TRUE,
|
||||||
|
LsaDbContainerObject,
|
||||||
|
0);
|
||||||
|
if (AccountsHandle == NULL)
|
||||||
|
{
|
||||||
|
ERR("LsapCreateDbObject (Accounts) failed\n");
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create SID string */
|
||||||
|
if (!ConvertSidToStringSid((PSID)AccountSid,
|
||||||
|
&SidString))
|
||||||
|
{
|
||||||
|
ERR("ConvertSidToStringSid failed\n");
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create the Account object */
|
||||||
|
Account = LsapCreateDbObject(AccountsHandle,
|
||||||
|
SidString,
|
||||||
|
FALSE,
|
||||||
|
LsaDbAccountObject,
|
||||||
|
DesiredAccess);
|
||||||
|
if (Account != NULL)
|
||||||
|
{
|
||||||
|
/* Set the Sid attribute */
|
||||||
|
Status = LsapSetObjectAttribute((PLSA_DB_OBJECT)Account,
|
||||||
|
L"Sid",
|
||||||
|
(PVOID)AccountSid,
|
||||||
|
GetLengthSid(AccountSid));
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
*AccountHandle = Account;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalFree(SidString);
|
||||||
|
|
||||||
|
LsapCloseDbObject(AccountsHandle);
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
#include <ndk/rtlfuncs.h>
|
#include <ndk/rtlfuncs.h>
|
||||||
#include <ndk/setypes.h>
|
#include <ndk/setypes.h>
|
||||||
|
|
||||||
|
|
||||||
#include <ntsecapi.h>
|
#include <ntsecapi.h>
|
||||||
|
#include <sddl.h>
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue