mirror of
https://github.com/reactos/reactos.git
synced 2025-05-07 10:46:58 +00:00
properly set the access token in CreateProcessAsUser()
svn path=/trunk/; revision=13192
This commit is contained in:
parent
955bb3e32e
commit
4da8f45753
1 changed files with 12 additions and 4 deletions
|
@ -30,6 +30,7 @@ CreateProcessAsUserA (HANDLE hToken,
|
||||||
LPSTARTUPINFOA lpStartupInfo,
|
LPSTARTUPINFOA lpStartupInfo,
|
||||||
LPPROCESS_INFORMATION lpProcessInformation)
|
LPPROCESS_INFORMATION lpProcessInformation)
|
||||||
{
|
{
|
||||||
|
PROCESS_ACCESS_TOKEN AccessToken;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
/* Create the process with a suspended main thread */
|
/* Create the process with a suspended main thread */
|
||||||
|
@ -47,11 +48,14 @@ CreateProcessAsUserA (HANDLE hToken,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AccessToken.Token = hToken;
|
||||||
|
AccessToken.Thread = NULL;
|
||||||
|
|
||||||
/* Set the new process token */
|
/* Set the new process token */
|
||||||
Status = NtSetInformationProcess (lpProcessInformation->hProcess,
|
Status = NtSetInformationProcess (lpProcessInformation->hProcess,
|
||||||
ProcessAccessToken,
|
ProcessAccessToken,
|
||||||
(PVOID)&hToken,
|
(PVOID)&AccessToken,
|
||||||
sizeof (HANDLE));
|
sizeof (AccessToken));
|
||||||
if (!NT_SUCCESS (Status))
|
if (!NT_SUCCESS (Status))
|
||||||
{
|
{
|
||||||
SetLastError (RtlNtStatusToDosError (Status));
|
SetLastError (RtlNtStatusToDosError (Status));
|
||||||
|
@ -84,6 +88,7 @@ CreateProcessAsUserW (HANDLE hToken,
|
||||||
LPSTARTUPINFOW lpStartupInfo,
|
LPSTARTUPINFOW lpStartupInfo,
|
||||||
LPPROCESS_INFORMATION lpProcessInformation)
|
LPPROCESS_INFORMATION lpProcessInformation)
|
||||||
{
|
{
|
||||||
|
PROCESS_ACCESS_TOKEN AccessToken;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
/* Create the process with a suspended main thread */
|
/* Create the process with a suspended main thread */
|
||||||
|
@ -101,11 +106,14 @@ CreateProcessAsUserW (HANDLE hToken,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AccessToken.Token = hToken;
|
||||||
|
AccessToken.Thread = NULL;
|
||||||
|
|
||||||
/* Set the new process token */
|
/* Set the new process token */
|
||||||
Status = NtSetInformationProcess (lpProcessInformation->hProcess,
|
Status = NtSetInformationProcess (lpProcessInformation->hProcess,
|
||||||
ProcessAccessToken,
|
ProcessAccessToken,
|
||||||
(PVOID)&hToken,
|
(PVOID)&AccessToken,
|
||||||
sizeof (HANDLE));
|
sizeof (AccessToken));
|
||||||
if (!NT_SUCCESS (Status))
|
if (!NT_SUCCESS (Status))
|
||||||
{
|
{
|
||||||
SetLastError (RtlNtStatusToDosError (Status));
|
SetLastError (RtlNtStatusToDosError (Status));
|
||||||
|
|
Loading…
Reference in a new issue