我如何获得Windows中所有打开的命名pipe道的列表?

有没有简单的方法来testing你的命名pipe道是否正常工作? 我想确保从我的应用程序发送的数据实际上正在发送。 有没有一种快速简便的方法来获取所有命名pipe道的列表?

您可以使用sysinternals的Process Explorer查看这些信息。 使用“查找 – >查找句柄或DLL …”选项并input模式“\ Device \ NamedPipe \”。 它会告诉你哪些进程有哪些pipe道打开。

尝试以下方法:

String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\"); 

从Sysinternals使用pipelist.exe 。

在Windows Powershell控制台中,键入

 [System.IO.Directory]::GetFiles("\\.\\pipe\\") 

如果您正在运行PowerShell版本3或更高版本(不是Windows 7的默认版本),您也可以键入

 get-childitem \\.\pipe\ 

C#:

 String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\"); 

第二条pipe道在提交时由本网站解释…开始时需要两个反斜杠。 所以一定要使用System.IO.Directory.GetFiles(@“\\。\ pipe \”)。

请注意,我已经看到这个函数调用抛出一个“path中的非法字符”。 当我的机器上的其中一个pipe道有无效字符时例外。 虽然PipleList.exe工作正常,所以它看起来像MS的.NET代码中的错误。

我偶然发现了Chrome中的一个function,通过导航到“file://.pipe//”列出所有打开的命名pipe道。

由于我似乎无法find任何这方面的参考资料,对我很有帮助,所以我想我可以分享。