所有人均可使用的命名管道

时间:2018-12-11 21:59:16

标签: c# windows security winapi acl

我想创建一个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;
        }

在服务器初始化期间,有人抛出拒绝访问(第一种方法),第二种方法服务器启动,但不允许任何人连接。

请告知

0 个答案:

没有答案