首页 > 解决方案 > 每个人都可以访问的命名管道

问题描述

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

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

请指教

标签: c#windowssecuritywinapiacl

解决方案


推荐阅读