|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH 2/4] Add option to elevate administrator users
On Thu, 7 Nov 2019 at 15:53, Owen Smith <owen.smith@xxxxxxxxxx> wrote:
>
> If the user has Administrator access, add a prompt and ability to
> elevate the access to the Administrator privilege level instead of
> retaining the user privilege level.
>
> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
Acked-by: Paul Durrant <paul@xxxxxxx>
> ---
> src/tty/tty.c | 68
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 68 insertions(+)
>
> diff --git a/src/tty/tty.c b/src/tty/tty.c
> index 035f18c..e295f06 100644
> --- a/src/tty/tty.c
> +++ b/src/tty/tty.c
> @@ -52,6 +52,7 @@ typedef struct _TTY_CONTEXT {
> TTY_STREAM Device;
> TCHAR UserName[MAXIMUM_BUFFER_SIZE];
> HANDLE Token;
> + HANDLE OriginalToken;
> PROCESS_INFORMATION ProcessInfo;
> } TTY_CONTEXT, *PTTY_CONTEXT;
>
> @@ -349,6 +350,69 @@ GetCredentials(
> return TRUE;
> }
>
> +static BOOL
> +RequestElevation(
> + VOID
> + )
> +{
> + PTTY_CONTEXT Context = &TtyContext;
> + TOKEN_ELEVATION_TYPE Elevation;
> + DWORD Size;
> + TCHAR Buffer[MAXIMUM_BUFFER_SIZE];
> + PTCHAR End;
> + TOKEN_LINKED_TOKEN LinkedToken;
> + BOOL Success;
> +
> + Success = GetTokenInformation(Context->Token,
> + TokenElevationType,
> + &Elevation,
> + sizeof(Elevation),
> + &Size);
> + if (!Success)
> + return TRUE;
> +
> + if (Elevation != TokenElevationTypeLimited)
> + return TRUE;
> +
> + ECHO(&Context->Device, "\r\n");
> + ECHO(&Context->Device, " run as Administrator [yes|no]: ");
> +
> + ZeroMemory(Buffer, sizeof (Buffer));
> +
> + Success = GetLine(&Context->Device,
> + Buffer,
> + sizeof (Buffer),
> + &Size,
> + FALSE);
> + if (!Success)
> + return FALSE;
> +
> + End = _tcschr(Buffer, TEXT('\r'));
> + if (End == NULL)
> + return FALSE;
> +
> + *End = TEXT('\0');
> +
> + if (_tcslen(Buffer) == 0)
> + return FALSE;
> +
> + if (_tcscmp(Buffer, TEXT("yes")) != 0)
> + return TRUE;
> +
> + Success = GetTokenInformation(Context->Token,
> + TokenLinkedToken,
> + &LinkedToken,
> + sizeof(LinkedToken),
> + &Size);
> + if (!Success)
> + return FALSE;
> +
> + Context->OriginalToken = Context->Token;
> + Context->Token = LinkedToken.LinkedToken;
> +
> + return TRUE;
> +}
> +
> static DWORD WINAPI
> TtyIn(
> IN LPVOID Argument
> @@ -498,6 +562,10 @@ _tmain(
>
> ZeroMemory(Password, sizeof(Password));
>
> + if (!Success)
> + ExitProcess(1);
> +
> + Success = RequestElevation();
> if (!Success)
> ExitProcess(1);
>
> --
> 2.16.2.windows.1
>
>
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |