Windowsで開いているすべての名前付きパイプのリストを取得するにはどうすればよいですか?


91

名前付きパイプが正しく機能しているかどうかをテストする簡単な方法はありますか?アプリから送信しているデータが実際に送信されていることを確認したいと思います。名前付きパイプすべてのリストを取得するための迅速で簡単な方法はありますか?

回答:


98

あなたがこれらを表示することができますプロセスエクスプローラのSysinternalsから。[検索]-> [ハンドルまたはDLLの検索...]オプションを使用して、パターン「\ Device \ NamedPipe \」を入力します。どのプロセスでどのパイプが開いているかが表示されます。


これを試す前に、使用しているProcessExplorerのバージョンを確認してください。v15.23では機能しませんが、v16.02では機能します。(他のバージョンは試していません)
Carl

2
他の回答で言及されているように、起こりうる例外を回避するために、より低レベルであるが、名前付きパイプの名前にファイル名の代わりに無効な文字が含まれている場合でもチャームのように機能する私のソリューションを使用できます。stackoverflow.com/questions/25109491/…を
user2126375 2014

2
pipelist.exeSysInternalsからの使用はさらに簡単ですが、コマンドラインのみです。
Chris Charabaruk 2018年

84

Windows Powershellコンソールで、次のように入力します

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

OSのバージョンがWindows7より大きい場合は、次のように入力することもできます。
get-childitem \\.\pipe\

これにより、オブジェクトのリストが返されます。名前のみが必要な場合:

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

(2番目の例\\.\pipe\ はPowershell 7では機能しませんが、最初の例は機能します)


3
管理者として
Powershellを

2
get-childitem \\。\ pipe \
Chris Gillum

@ChrisGillum試してみたところ、「パス '\\。\ pipe \'が存在しないため見つかりません」というエラーが発生しました
Andrew Shepherd

1
@AndrewShepherd興味深い。どのOSで実行していますか?Windows Server2012とWindows10(それぞれ、PowerShell v3とv5)で動作します。
クリスギラム2015年

1
@ChrisGillumしかし、Windows SurfaceRTデバイスで試してみました。それはそこで働きます。(Powershell v4)。あなたのコメントを答えに取り入れます。
アンドリューシェパード

57

代わりに次を試してください。

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

6
スラッシュがありません。string [] listOfPipes = System.IO.Directory.GetFiles(@ "\\。\ pipe \");
dmex 2010年

パイプを検索したり一覧表示したりする機能を探して一晩中過ごしました。これはまさに私が必要としていたものです。ありがとう!
swax 2012

この特別な道は何ですか?\\。\はドライブへの生のアクセスに使用されているようですが、pipeどこから来たのですか?
Kevin Doyon

2
@Kevin "\\。\"は、msdn.microsoft.com
en

5
このメソッドがWindows10で動作する際に問題が発生しました-「2番目のパスフラグメントはドライブまたはUNC名であってはなりません。パラメーター名:path2」というエラーが発生します
Dai Bok

45

Sysinternalsのpipelist.exeを使用します。


1
sysinternalsのhandle.exeも参照してください。これは、ハンドルが開いているほとんどすべてのものを表示します。
JimR 2011年

19

「file://.// pipe //」に移動して、開いている名前付きパイプをすべて一覧表示するChromeの機能を見つけました。

私はこれへの言及を見つけることができないようで、それは私にとって非常に役に立ちましたので、私は共有するかもしれないと思いました。


もう少し説明してもらえますか?
ディーターミームケン2017年

これは私のパイプをリストします。すごい!(それはアンドリュー・シェパードの答えが示すように、ディレクトリのように動作しますので、これは動作します注)
マルティン・コル

Chromeが多くの名前付きパイプを使用していることに気付いたので、これはデバッグ/診断用だと思います。Chromeが実行されていないときでも、125個の「クロム」パイプが見つかりました。
ココワラ



7

2番目のパイプは、送信時にこのWebサイトによって解釈されました...最初に2つの円記号が必要です。したがって、必ずSystem.IO.Directory.GetFiles(@ "\\。\ pipe \")を使用してください。

この関数呼び出しが「パスに不正な文字」をスローするのを見たことがあることに注意してください。マシンのパイプの1つに無効な文字が含まれている場合の例外。PipleList.exeは問題なく動作したので、MSの.netコードのバグのようです。


1
プログラムがこれをトリガーするパイプ名を開くことは非常に一般的であるため、「パス内の不正な文字」に関する注意は重要なポイントです。likeという名前のパイプを開くプログラムC:\myLocation\someFile.xは、このエラーを引き起こします。
dss539 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.