100

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

4

8 回答 8

106

您可以使用sysinternals中的Process Explorer查看这些内容。使用“Find -> Find Handle or DLL...”选项并输入模式“\Device\NamedPipe\”。它将显示哪些进程打开了哪些管道。

于 2008-11-03T14:39:49.277 回答
100

在 Windows Powershell 控制台中,键入

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

如果您的操作系统版本高于 Windows 7,您还可以键入
get-childitem \\.\pipe\

这将返回一个对象列表。如果您只想要名称:

(get-childitem \\.\pipe\).FullName

(第二个示例\\.\pipe\ 在 Powershell 7 中不起作用,但第一个示例可以)

于 2012-08-22T04:44:28.173 回答
57

请尝试以下操作:

String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
于 2010-11-23T02:13:18.573 回答
49

使用Sysinternals 的pipelist.exe

于 2009-09-16T22:19:42.290 回答
26

我偶然发现了 Chrome 中的一项功能,该功能将通过导航到“file://.//pipe//”列出所有打开的命名管道

由于我似乎找不到任何对此的参考,而且它对我很有帮助,我想我可以分享一下。

于 2017-01-05T14:44:37.667 回答
18

C#:

String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
于 2010-11-17T22:31:46.057 回答
13

CMD提示时:

>ver

Microsoft Windows [Version 10.0.18362.476]

>dir \\.\pipe\\
于 2019-11-27T09:23:05.803 回答
9

第二个管道在提交时被此网站解释...您需要在开头使用两个反斜杠。所以请务必使用System.IO.Directory.GetFiles(@"\\.\pipe\").

请注意,我已经看到此函数调用抛出“路径中的非法字符”。当我的机器上的一个管道包含无效字符时出现异常。PipleList.exe 工作正常,所以它似乎是 MS 的 .NET 代码中的一个错误。

于 2011-01-03T22:30:37.737 回答