我想创建一个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;
}
在服务器初始化期间,有人抛出拒绝访问(第一种方法),第二种方法服务器启动,但不允许任何人连接。
请告知