如何获取 Windows 中所有打开的命名管道的列表?

问题描述 投票:0回答:8

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

windows winapi pipe
8个回答
136
投票

在 Windows Powershell 控制台中,键入

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

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

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

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

在 Powershell 7 中,第二个示例

\\.\pipe\
不起作用(请参阅此 已知错误),因此您必须坚持第一个语法。


119
投票

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


57
投票

尝试以下方法:

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

51
投票

使用 Sysinternals 中的 pipelist.exe


36
投票

我偶然发现了 Chrome 中的一个功能,该功能将通过导航到

file://.//pipe//

列出所有打开的命名管道

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


26
投票

CMD
提示时:

>ver

Microsoft Windows [Version 10.0.18362.476]

>dir \\.\pipe\\

19
投票

C#:

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

10
投票

第二个管道在提交时由该网站解释...您需要在开头有两个反斜杠。所以一定要使用

System.IO.Directory.GetFiles(@"\\.\pipe\")

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

© www.soinside.com 2019 - 2024. All rights reserved.