我有一个通过命名管道设置的服务器。它对于域管理员来说工作得很好,但是当我在普通用户上测试客户端时,它给出了异常“访问路径被拒绝”。因此,这就是我尝试设置的权限,以授予域中所有经过身份验证的用户访问权限。我在这里做错了什么?
Server:
NamedPipeServerStream pipeServer = new NamedPipeServerStream("message-generator", PipeDirection.InOut, pipeThreads, PipeTransmissionMode.Message, PipeOptions.None);
PipeSecurity pipeSecurity = pipeServer.GetAccessControl();
pipeSecurity.AddAccessRule(new PipeAccessRule(@"localdomain\Authenticated Users", PipeAccessRights.FullControl, AccessControlType.Allow));
pipeServer.SetAccessControl(pipeSecurity);
Client:
NamedPipeClientStream pipeClient = new NamedPipeClientStream("servername", "message-generator", PipeDirection.InOut, PipeOptions.None, TokenImpersonationLevel.Impersonation))
服务器名和域显然不同,但是在服务器上,当它到达 pipelineServer.SetAccessControl 函数时,它给了我异常“UnauthorizedAccessException”。
任何帮助是极大的赞赏
你需要使用ctorNamedPipeServerStream
它允许您在管道句柄上指定所需的访问权限:
public NamedPipeServerStream(
string pipeName,
PipeDirection direction,
int maxNumberOfServerInstances,
PipeTransmissionMode transmissionMode,
PipeOptions options,
int inBufferSize,
int outBufferSize,
PipeSecurity pipeSecurity,
HandleInheritability inheritability,
PipeAccessRights additionalAccessRights
)
当你打电话时,你需要询问PipeAccessRights.ChangePermissions
在最后一个论点中。然后SetAccessControl
应该成功。
看我的博客http://blogs.charteris.com/blogs/chrisdi/archive/2009/12/04/exploring-the-wcf-named-pipe-binding-part-4.aspx举个例子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)