/// <summary> /// Does the client of "pipeStream" have the same identity and elevation as we do? /// </summary> private static bool ClientAndOurIdentitiesMatch(NamedPipeServerStream pipeStream) { if (PlatformInformation.IsWindows) { var serverIdentity = GetIdentity(impersonating: false); (string name, bool admin)clientIdentity = default; pipeStream.RunAsClient(() => { clientIdentity = GetIdentity(impersonating: true); }); CompilerServerLogger.Log($"Server identity = '{serverIdentity.name}', server elevation='{serverIdentity.admin}'."); CompilerServerLogger.Log($"Client identity = '{clientIdentity.name}', client elevation='{serverIdentity.admin}'."); return (StringComparer.OrdinalIgnoreCase.Equals(serverIdentity.name, clientIdentity.name) && serverIdentity.admin == clientIdentity.admin); } else { return(BuildServerConnection.CheckIdentityUnix(pipeStream)); } }