有没有一种简单的方法来测试您的命名管道是否正常工作?我想确保从应用程序发送的数据确实已发送。有没有一种快速简便的方法来获取所有命名管道的列表?
在 Windows Powershell 控制台中,键入
[System.IO.Directory]::GetFiles("\\.\\pipe\\")
get-childitem \\.\pipe\
这将返回一个对象列表。如果您只想要名字:
(get-childitem \\.\pipe\).FullName
在 Powershell 7 中,第二个示例
\\.\pipe\
不起作用(请参阅此 已知错误),因此您必须坚持第一个语法。
您可以使用 sysinternals 中的 Process Explorer 查看这些内容。使用“查找 -> 查找句柄或 DLL...”选项并输入模式“\Device\NamedPipe\”。它将显示哪些进程打开了哪些管道。
尝试以下方法:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
使用 Sysinternals 中的 pipelist.exe。
我偶然发现了 Chrome 中的一个功能,该功能将通过导航到
file://.//pipe//
列出所有打开的命名管道
由于我似乎找不到任何对此的参考,而且它对我很有帮助,所以我想我可以分享。
在
CMD
提示时:
>ver
Microsoft Windows [Version 10.0.18362.476]
>dir \\.\pipe\\
C#:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
第二个管道在提交时由该网站解释...您需要在开头有两个反斜杠。所以一定要使用
System.IO.Directory.GetFiles(@"\\.\pipe\")
。
请注意,我已经看到此函数调用抛出“路径中的非法字符”。当我的机器上的管道之一包含无效字符时出现异常。不过 PipleList.exe 工作正常,所以它看起来像是 MS .NET 代码中的一个错误。