File: Installer\Windows\InstallElevationContextBase.cs
Web Access
Project: ..\..\..\src\Cli\dotnet\dotnet.csproj (dotnet)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#nullable disable
 
using System.IO.Pipes;
using System.Runtime.Versioning;
 
namespace Microsoft.DotNet.Cli.Installer.Windows;
 
[SupportedOSPlatform("windows")]
internal abstract class InstallElevationContextBase : ElevationContextBase
{
    /// <summary>
    /// Gets whether this context is associated with the client or server instance of the
    /// installer.
    /// </summary>
    public abstract bool IsClient
    {
        get;
    }
 
    /// <summary>
    /// <see langword="true"/> if the the current user belongs to the administrators group.
    /// </summary>
    public override bool IsElevated => WindowsUtils.IsAdministrator();
 
    /// <summary>
    /// Command dispatcher to handle IPC between the elevated and non-elevated processes.
    /// </summary>
    public InstallMessageDispatcher Dispatcher
    {
        get;
        private set;
    }
 
    protected void InitializeDispatcher(PipeStream pipeStream)
    {
        Dispatcher = new InstallMessageDispatcher(pipeStream);
    }
}