受AD安全组保护的C#命名管道服务器

时间:2017-04-14 22:23:14

标签: c# powershell

我在我的班级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组。 谢谢!

0 个答案:

没有答案