Windows'ta tüm açık adlandırılmış kanalların bir listesini nasıl alabilirim?


91

Adlandırılmış kanalınızın doğru çalışıp çalışmadığını test etmenin kolay bir yolu var mı? Uygulamamdan gönderdiğim verilerin gerçekten gönderildiğinden emin olmak istiyorum. Tüm adlandırılmış boruların bir listesini almanın hızlı ve kolay bir yolu var mı?

Yanıtlar:


98

Bunları, sysinternals'dan Process Explorer ile görüntüleyebilirsiniz . "Bul -> Tutamaç veya DLL Bul ..." seçeneğini kullanın ve "\ Aygıt \ NamedPipe \" modelini girin. Hangi işlemlerin hangi boruların açık olduğunu size gösterecektir.


Bunu denemeden önce İşlem Gezgini'nin hangi sürümüne sahip olduğunuzu kontrol edin. V15.23'te çalışmaz, ancak v16.02'de çalışır. (diğer sürümleri denemedim)
Carl

2
Olası istisnalardan kaçınmak için - diğer cevaplarda da belirtildiği gibi - daha düşük seviyeli olan ancak adlandırılmış kanalın adı dosya adı yolunda geçersiz karakterler içeriyor olsa bile bir tılsım gibi çalışan çözümümü kullanabilirsiniz. Lütfen stackoverflow.com/questions/25109491/… sayfasına
user2126375

2
pipelist.exeSysInternals'dan kullanmak daha da basittir, ancak yalnızca komut satırıdır.
Chris Charabaruk

84

Windows Powershell konsoluna yazın

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

İşletim sistemi sürümünüz Windows 7'den büyükse, şunu da yazabilirsiniz:
get-childitem \\.\pipe\

Bu, nesnelerin bir listesini döndürür. Yalnızca adı istiyorsanız:

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

(İkinci örnek \\.\pipe\ Powershell 7'de çalışmıyor, ancak ilk örnek çalışıyor)


3
Powershell'i yönetici olarak açmayı düşünebilirsiniz
dotNetE

2
Ayrıca get-childitem \\. \ Pipe \
Chris Gillum

@ChrisGillum Bunu denedim ve "'\\. \ Pipe \' yolu bulunamıyor çünkü mevcut değil" hatası aldım
Andrew Shepherd

1
@AndrewSh Shepherd İlginç. Hangi işletim sistemi üzerinde çalışıyorsunuz? Benim için Windows Server 2012 ve Windows 10'da (sırasıyla PowerShell v3 ve v5) çalışıyor.
Chris Gillum

1
@ChrisGillum Ama Windows Surface RT cihazımda denedim. Orada çalışıyor. (Powershell v4). Yorumunuzu cevaba ekleyeceğim.
Andrew Shepherd

57

Bunun yerine aşağıdakileri deneyin:

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

6
bir slash eksik. string [] listOfPipes = System.IO.Directory.GetFiles (@ "\\. \ boru \");
dmex

Bütün geceyi boruları aramak veya listelemek için bir işlev aramakla geçirdim. Bu tam olarak ihtiyacım olan şey. Teşekkürler!!
03

Bu özel yol nedir? \\. \ bir sürücüye ham erişim için kullanılıyor gibi görünüyor, ancak nereden pipegeliyor?
Kevin Doyon

2
"\\ \". @Kevin araçları "bu makine" olarak başına msdn.microsoft.com/en-US/en-en/library/windows/desktop/...
Eugene Ryabtsev

5
Windows 10'da çalışan bu yöntemle ilgili sorunlar yaşadık - "İkinci yol parçası bir sürücü veya UNC adı olmamalıdır. Parametre adı: yol2"
Dai Bok

45

Sysinternals'dan pipelist.exe'yi kullanın .


1
Açık tutamacı olan hemen hemen her şeyi gösteren sysinternals'dan handle.exe'ye de bakın.
JimR

19

Chrome'da, "file: //.//pipe//" konumuna giderek tüm açık adlandırılmış kanalları listeleyen bir özelliğe rastladım

Buna herhangi bir referans bulamadığım ve bana çok yardımcı olduğu için, paylaşabileceğimi düşündüm.


Biraz daha açıklayabilir misin?
Dieter Meemken

Bu benim pipomu listeliyor. İnanılmaz! (Andrew Shepherd'ın cevabının gösterdiği gibi bir dizin gibi çalıştığı için bunun işe yarayacağını unutmayın)
Martín Coll

Sanırım bu hata ayıklama / teşhis için, çünkü Chrome'un çok sayıda adlandırılmış kanal kullandığını fark ettim - Chrome çalışmıyorken bile 125 "krom" boru buldum !
Cocowalla



7

İkinci çizgi, gönderildiğinde bu web sitesi tarafından yorumlandı ... Başlangıçta iki ters eğik çizgiye ihtiyacınız var. Bu nedenle System.IO.Directory.GetFiles (@ "\\. \ Pipe \") kullandığınızdan emin olun.

Bu işlev çağrısının bir 'yolda geçersiz karakterler' attığını gördüğüme dikkat edin. makinemdeki borulardan birinde geçersiz karakterler olduğunda istisna. PipleList.exe yine de çalıştı, bu yüzden MS'nin .net kodunda bir hata gibi görünüyor.


1
'Yoldaki geçersiz karakterler' hakkındaki not önemli bir noktadır, çünkü programların bunu tetikleyen boru adlarını açması çok yaygındır. Like adlı bir boru açan herhangi bir program C:\myLocation\someFile.xbu hataya neden olur.
dss539
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.