[英]NamedPipeServerStream Unauthorized Access exception
我从我的一位用户那里收到了一个 Event Viever 条目,说发生了未经授权的访问异常。 该过程从作为 SYSTEM 的服务启动。 我能够将错误缩小到创建 NamedPipeServerStream 的部分:
// <error in this block>
PipeSecurity pipeSa = new PipeSecurity();
pipeSa.AddAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), PipeAccessRights.ReadWrite, AccessControlType.Allow));
NamedPipeServerStream np = new NamedPipeServerStream("streamname", PipeDirection.InOut,1,PipeTransmissionMode.Message,PipeOptions.None,16383,1, pipeSa);
// </error in this block>
while (true){
try{
if (!np.IsConnected)
np.WaitForConnection();
}catch(Exception e){
}
}
我很确定错误在上面的 3 行块中。 它不会发生在我的任何计算机上,所以我不能重复错误。 上述代码中的哪些内容不被视为最佳实践并且可能导致错误?
错误信息图片:
你问的问题细节很少。 因此,很难确定真正的原因是什么。 不过我愿意试一试。
如果您查看未授权访问异常的文档
当操作系统由于 I/O 错误或特定类型的安全错误而拒绝访问时引发的异常。
我们可以看到您的代码已经吞噬了所有异常。 所以我们可以假设这是在创建 pipe 时抛出的。
我最好的猜测是,有时您无法访问 pipe,因为系统无法正确访问 pipe。 在做了一些快速研究之后。 这个问题似乎有很多值得一试的好信息。 转述几个答案:
有两件事会导致在同一 pipe 上实例化第二个或后续 NamedPipeServerStream 失败:
您可能缺少需要添加访问权限的权限,也许您需要为系统提供控制:
pipeSa.AddAccessRule(new PipeAccessRule("SYSTEM", PipeAccessRights.FullControl, AccessControlType.Allow));
pipeSa.AddAccessRule(pa);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.