跨网络命名管道给出“用户名或密码不正确”
Posted
技术标签:
【中文标题】跨网络命名管道给出“用户名或密码不正确”【英文标题】:Named Pipes Across Network Gives "The user name or password is incorrect" 【发布时间】: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 中以某种方式启用命名管道,但不确定如何(因为用户名/密码错误)。任何帮助是极大的赞赏。提前致谢!
【问题讨论】:
【参考方案1】:我最近遇到了同样的问题,在我的桌面上一切正常,但当我尝试与平板电脑“交谈”时却失败了。我找到了这篇文章:
https://www.ca.com/us/services-support/ca-support/ca-support-online/knowledge-base-articles.tec385226.html
对 IPC$ 的访问被拒绝。 (尤其不是身份验证代理的管道,而是 IPC 资源本身。)如果您的客户端尝试连接到不在客户端 Windows 域中的服务器,这是预期的。
我通过将我的(以前出现故障的平板电脑)直接物理连接到我的网络(即不是无线连接)对此进行了测试。应用程序正常工作,命名管道按预期响应。
一些注意事项:我所有的系统都在最新的 Windows 10 Pro 版本上(带有最近补丁的创建者更新。)所有系统都具有启用命名管道激活的 4.7 框架。此外,使用 64 位系统与 32 位平板电脑通信的测试仍然失败(无论物理连接与否,都会出现相同的错误)。 64 位到 64 位可以正常工作。
事实证明,一旦我将平板电脑物理连接到网络一次,就必须启用某些设置。现在我可以无线使用平板电脑并且命名管道正常运行。
我不是这方面的专家,所以我不确定接下来的步骤,但我想我会分享我的发现(经过大量测试和更新)。
希望这会有所帮助!
【讨论】:
以上是关于跨网络命名管道给出“用户名或密码不正确”的主要内容,如果未能解决你的问题,请参考以下文章