跨网络命名管道"用户名或密码不正确"

时间:2017-01-25 23:11:55

标签: c# .net security firewall named-pipes

对任何可以提供帮助的人!我一直在尝试使用一个c#应用程序来管理命名管道在两台PC之间的网络中工作。这些应用程序可以在同一个PC上和同一个域内的PC上完美运行。但是,当一台电脑处于" Workgroup"一个是在域名上。服务器上的安全性不是问题,我可以尽可能地打开它。

背景资料:

  1. 客户端 - PC在域中,可以通过c $ admin share连接到服务器
  2. 服务器 - 不在域中,作为控制台运行的应用程序,禁用防火墙,启用"允许入站文件和打印机共享"港口445。
  3. 似乎我无法访问远程服务器上的任何命名管道。代码:

    // 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 个答案:

答案 0 :(得分:0)

我最近遇到了同样的问题,我的桌面上的所有内容都有效,但当我尝试“#34; talk"到平板电脑。我找到了这篇文章:

https://www.ca.com/us/services-support/ca-support/ca-support-online/knowledge-base-articles.tec385226.html

拒绝访问IPC $。 (特别是身份验证代理的管道,但IPC资源本身。)如果您的客户端尝试连接到不在客户端Windows域中的服务器,则会出现这种情况。

我通过将我的(以前失败的平板电脑)直接连接到我的网络(即不是无线连接)进行了测试。应用程序正常工作,命名管道按预期响应。

一些注意事项:我的所有系统都使用最新的Windows 10 Pro版本(带有最新补丁的Creator Update)。所有系统都具有启用了命名管道激活的4.7框架。此外,使用64位系统与32位平板电脑通信的测试仍然失败(无论物理连接与否,都会出现相同的错误)。 64位到64位工作正常。

事实证明,一旦我将平板电脑实际连接到网络一次,就必须启用某些设置。现在我可以无线使用平板电脑,命名管道也能正常运行。

我不是这方面的专家,所以我不确定后续步骤,但我认为我分享了我发现的内容(经过大量测试和更新后)。

希望这有帮助!