我在我的班级ctor中使用以下代码在C#中创建命名管道。
PipeSecurity ps = new PipeSecurity();
ps.AddAccessRule(new PipeAccessRule("testADgroup", PipeAccessRights.ReadWrite | PipeAccessRights.CreateNewInstance | PipeAccessRights.ChangePermissions, AccessControlType.Allow));
pipeServer = new NamedPipeServerStream("testPipe", PipeDirection.InOut, 16,
PipeTransmissionMode.Message, PipeOptions.WriteThrough, 1024, 1024, ps);
streamReader = new StreamReader(pipeServer);
serverThread = new Thread(this.serviceThread);
当管道启动时,我使用这些powershell命令尝试打开管道
$npipeClient = new-object System.IO.Pipes.NamedPipeClientStream("testPipe")
$npipeClient.Connect()
这是我得到的错误
Exception calling "Connect" with "0" argument(s): "Access to the path is denied."
At line:1 char:1
+ $npipeClient.Connect()
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : UnauthorizedAccessException
如果我更改C#代码以使PipeAccessRule
代替使用Users组,它可以正常工作。但是,我想根据AD安全组的成员身份限制对命名管道的访问。
有人可以帮助我理解我做错了什么,或者我使用的命名管道实现的类型是否无法在PipeAccessRule中使用AD组。 谢谢!