Я хочу создать NamedPipe, который будет доступен всем на всех компьютерах в сети.
Вот два типа кода, которые я пробовал, но не работал:
NamedPipeServerStream pipeServer;
try
{
PipeSecurity pipeSecurity = new PipeSecurity();
pipeSecurity.SetAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), PipeAccessRights.ReadWrite, AccessControlType.Allow));
pipeServer =
new NamedPipeServerStream(
"Win7-PC\\testpipe",
PipeDirection.InOut,
NamedPipeServerStream.MaxAllowedServerInstances,
PipeTransmissionMode.Message,
PipeOptions.Asynchronous,
4096,
4096,
pipeSecurity, System.IO.HandleInheritability.None);
}
catch (Exception ex)
{
Console.Write("ERRRRRR");
throw;
}
Второй метод:
NamedPipeServerStream pipeServer;
try
{
PipeSecurity pipeSecurity = new PipeSecurity();
// allow network access, allow read/write to everyone locally and the owner/creator
pipeSecurity.SetSecurityDescriptorSddlForm("D:(A;;FA;;;NU)(A;;0x12019f;;;WD)(A;;0x12019f;;;CO)");
pipeServer =
new NamedPipeServerStream(
"testpipe",
PipeDirection.InOut,
NamedPipeServerStream.MaxAllowedServerInstances,
PipeTransmissionMode.Message,
PipeOptions.Asynchronous,
4096,
4096,
pipeSecurity);
}
catch (Exception ex)
{
Console.Write("ERRRRRR");
throw;
}
Один отказывает в доступе (первый метод) во время инициализации сервера, сервер второго метода запускается, но не позволяет никому подключиться к нему.
Пожалуйста, сообщите