NamedPipeClientStream и System.UnauthorizedAccessExceptionC#

Место общения программистов C#
Anonymous
NamedPipeClientStream и System.UnauthorizedAccessException

Сообщение Anonymous »

Я пытаюсь использовать именованные каналы, чтобы служба Windows и приложение могли обмениваться сообщениями.
СЕРВИС

Код: Выделить всё

var ps = new PipeSecurity();
//ps.SetAccessRule(new PipeAccessRule("Everyone",
PipeAccessRights.ReadWrite, AccessControlType.Allow));
//ps.SetAccessRule(new PipeAccessRule(
//    new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null),
//    PipeAccessRights.ReadWrite,
//    AccessControlType.Allow));
//ps.SetAccessRule(new PipeAccessRule(
//    new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null),
//    PipeAccessRights.ReadWrite,
//    AccessControlType.Allow));
ps.SetAccessRule(new PipeAccessRule(
new SecurityIdentifier(WellKnownSidType.WorldSid, null),
PipeAccessRights.ReadWrite,
AccessControlType.Allow));

var serverPipe = new NamedPipeServerStream(NamedPipeHelper.PipeName,
PipeDirection.InOut, 1,
PipeTransmissionMode.Message);
serverPipe.SetAccessControl(ps);
await serverPipe.WaitForConnectionAsync(ct);
ПРИЛОЖЕНИЕ

Код: Выделить всё

var clientPipe = new NamedPipeClientStream(".", NamedPipeHelper.PipeName,
PipeDirection.InOut);
await clientPipe.ConnectAsync(TimeSpan.FromSeconds(3), ct);
Как только приложение пытается подключиться к службе, я получаю

System.UnauthorizedAccessException: доступ к пути отказано

Как видите, я настроил безопасность сервера, а также попробовал несколько разных решений, но ничего не помогло.

Я также пытался запустить службу как простое приложение (с повышенными правами), но когда клиент подключается из непривилегированной учетной записи, я получаю сообщение об ошибке.

Если запустить приложение от привилегированного пользователя, соединение работает (оба со службой и сервером, работающим как простое приложение).
Несколько блогов и веб-сайтов говорят, что решение состоит в том, чтобы передать безопасность внутри ctor, но с net8 это невозможно.
Я застрял, не знаю, как решить эту проблему.

Подробнее здесь: https://stackoverflow.com/questions/785 ... sexception

Вернуться в «C#»