【发布时间】:2017-06-11 07:55:07
【问题描述】:
致任何可以提供帮助的人!我一直在尝试让一个 c# 应用程序在两台 pc 之间的网络上谈论命名管道。这些应用程序可以在同一台电脑和同一域内的电脑上完美运行。但是当一台电脑在“工作组”中而另一台电脑在域中时,我会遇到问题。服务器上的安全不是问题,我可以让它尽可能的开放。
背景信息:
- 客户端 - PC 在域中,可以通过 c$ 管理共享连接到服务器
- 服务器 - 不在域中,应用程序作为控制台运行,防火墙禁用,启用“允许入站文件和打印机共享”端口 445。
似乎我无法访问远程服务器上的任何命名管道。代码:
// Client Connection
PipeStream pipe = new NamedPipeClientStream("192.168.1.102", "TEMP_PIPE", PipeDirection.InOut, PipeOptions.Asynchronous, TokenImpersonationLevel.None);
((NamedPipeClientStream)pipe).Connect();
// Server Connection
PipeSecurity pipeSecurity = new PipeSecurity();
pipeSecurity.AddAccessRule(new PipeAccessRule("Everyone", PipeAccessRights.ReadWrite | PipeAccessRights.CreateNewInstance, AccessControlType.Allow));
PipeStream pipe = new NamedPipeServerStream("TEMP_PIPE", PipeDirection.InOut, NamedPipeServerStream.MaxAllowedServerInstances, PipeTransmissionMode.Message,
PipeOptions.Asynchronous, 0, 0, pipeSecurity);
当我尝试从客户端 Connect() 连接到服务器时,我收到“用户名或密码不正确”。错误。
我卡住了,不确定这是 C# .Net 命名管道问题还是 Windows 问题?我倾向于相信我需要在 Windows 中以某种方式启用命名管道,但不确定如何(因为用户名/密码错误)。任何帮助是极大的赞赏。提前致谢!
【问题讨论】:
标签: c# .net security firewall named-pipes