2008-11-03 13 views

Respuesta

76

Puede verlos con Process Explorer de sysinternals. Use la opción "Buscar -> Buscar identificador o DLL ..." e ingrese el patrón "\ Dispositivo \ PirámideNamed". Le mostrará qué procesos tienen qué tubos abiertos.

+0

Compruebe qué versión de Process Explorer tiene antes de intentar esto. No funciona en v15.23, pero funciona en v16.02. (no he probado otras versiones) – Carl

+2

Para evitar posibles excepciones, como se menciona en otras respuestas, puede usar mi solución, que es de un nivel más bajo pero que funciona como un amuleto, aunque el nombre del nombre contenga caracteres no válidos en forma de nombre de archivo. Por favor, consulte http://stackoverflow.com/questions/25109491/how-can-i-get-a-list-of-all-open-named-pipes-in-windows-and-avoiding-possible-ex/25126943# 25126943 – user2126375

+0

Usar 'pipelist.exe' de SysInternals es incluso más simple, pero solo es una línea de comando. –

39

Usa pipelist.exe de Sysinternals.

+0

Consulte también handle.exe desde sysinternals que mostrará casi todas las cosas que tienen un controlador abierto. – JimR

+0

Manejar http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx –

16

C#:

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

Usted ... Absolutley ROCK! – NTDLS

52

Pruebe lo siguiente en su lugar:

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

su falta una barra. cadena [] listOfPipes = System.IO.Directory.GetFiles (@ "\\. \ Pipe \"); – dmex

+0

Usted ... ¡Absolutley ROCK! – NTDLS

+0

Pasé toda la noche buscando una función para buscar o enumerar tuberías. Esto es exactamente lo que necesitaba. ¡¡Gracias!! – swax

7

El segundo tubo se interpretan en el presente sitio web cuando se presente ... Se necesitan dos barras invertidas al principio. Así que asegúrese de usar System.IO.Directory.GetFiles (@ "\\. \ Pipe \").

Tenga en cuenta que he visto esta llamada a la función arrojar un 'caracteres ilegales en la ruta'. excepción cuando una de las tuberías en mi máquina tenía caracteres no válidos. PipleList.exe funcionó bien, por lo que parece un error en el código .net de MS.

+1

La nota sobre 'caracteres ilegales en ruta' es un punto importante, porque es muy común que los programas abran nombres de tuberías que desencadenan esto. Cualquier programa que abra un conducto llamado 'C: \ myLocation \ someFile.x' causará este error. – dss539

41

En la consola de Windows PowerShell, escriba

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


Si la versión del sistema operativo es mayor que la de Windows 7, puede también escribir

get-childitem \\.\pipe\ 
+1

Es posible que desee considerar la apertura de Powershell como administrador – dotNetE

+0

También puede usar get-childitem \\. \ Pipe \ –

+0

@ChrisGillum Intenté eso, y me salió un error "No encuentro la ruta '\\. \ Pipe \' porque no existe " –

6

me encontré con una característica de cromo que se enumere todos los conductos con nombre abiertos navegando a "file: //.//pipe//"

Como no puedo encontrar ninguna referencia a thi s y ha sido muy útil para mí, pensé que podría compartir.

+0

¿Puedes explicar un poco más? –

+0

Esto no enumera mis tuberías. ¡Asombroso! (tenga en cuenta que esto funcionará porque funciona como un directorio, como muestra la respuesta de Andrew Shepherd) –

Cuestiones relacionadas