Windows에서 열려있는 모든 명명 된 파이프 목록을 얻으려면 어떻게해야합니까?


86

명명 된 파이프가 올바르게 작동하는지 테스트하는 쉬운 방법이 있습니까? 내 앱에서 보내는 데이터가 실제로 전송되고 있는지 확인하고 싶습니다. 모든 명명 된 파이프 목록을 얻는 빠르고 쉬운 방법이 있습니까?

답변:


95

sysinternals에서 Process Explorer를 사용 하여이를 볼 수 있습니다 . "찾기-> 핸들 또는 DLL 찾기 ..."옵션을 사용하고 "\ Device \ NamedPipe \"패턴을 입력합니다. 어떤 프로세스가 어떤 파이프가 열려 있는지 보여줍니다.


이것을 시도하기 전에 가지고있는 Process Explorer의 버전을 확인하십시오. v15.23에서는 작동하지 않지만 v16.02에서는 작동합니다. (다른 버전을 시도하지 않은)

2
가능한 예외를 피하기 위해-다른 답변에서 언급했듯이-명명 된 파이프의 이름에 파일 이름에 잘못된 문자가 포함되어 있어도 더 낮은 수준이지만 매력처럼 작동하는 내 솔루션을 사용할 수 있습니다. stackoverflow.com/questions/25109491/…을
user2126375 2014-08-04

2
pipelist.exeSysInternals에서 사용 하는 것은 더 간단하지만 명령 줄일뿐입니다.
크리스 Charabaruk

79

Windows Powershell 콘솔에서 다음을 입력합니다.

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

OS 버전이 Windows 7보다 높은 경우 다음을 입력 할 수도 있습니다.
get-childitem \\.\pipe\

이것은 객체 목록을 반환합니다. 이름 만 원하는 경우 :

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

3
당신은 관리자로 PowerShell을 열고 고려할 수 있습니다
dotNetE

2
또한 \\-ChildItem을 얻을 수 있습니다 \ 파이프 \.
크리스 Gillum

@ChrisGillum 시도했는데 " '\\. \ pipe \'경로가 존재하지 않기 때문에 찾을 수 없습니다."라는 오류가 발생했습니다.
Andrew Shepherd

1
@AndrewShepherd 흥미 롭군요. 어떤 OS에서 실행 중입니까? Windows Server 2012 및 Windows 10 (각각 PowerShell v3 및 v5)에서 저에게 적합합니다.
Chris Gillum 2015 년

1
@ChrisGillum하지만 방금 Windows Surface RT 장치에서 사용해 보았습니다. 거기에서 작동합니다. (Powershell v4). 귀하의 의견을 답변에 통합하겠습니다.
앤드류 목사

57

대신 다음을 시도하십시오.

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

6
슬래시가 누락되었습니다. string [] listOfPipes = System.IO.Directory.GetFiles (@ "\\. \ pipe \");
dmex 2010

나는 파이프를 검색하거나 나열하는 기능을 찾기 위해 밤새도록 보냈다. 이것이 바로 제가 필요로하는 것입니다. 감사!!
swax

이 특별한 길은 무엇입니까? \\. \는 드라이브에 대한 원시 액세스에 사용되는 것으로 보이지만 어디에서 pipe왔습니까?
Kevin Doyon 2016 년

2
"\\. \"@Kevin 수단 "이 컴퓨터"와 같은 당 msdn.microsoft.com/en-US/en-en/library/windows/desktop/...
유진 Ryabtsev

5
Windows 10에서 작동하는이 방법에 문제가 발생했습니다. "두 번째 경로 조각은 드라이브 또는 UNC 이름이 아니어야합니다. 매개 변수 이름 : path2"
Dai Bok

44

Sysinternals의 pipelist.exe 를 사용하십시오 .


1
열린 핸들이있는 거의 모든 것을 표시하는 sysinternals의 handle.exe도 참조하십시오.
JimR

19

Chrome에서 "file : //.//pipe//"로 이동하여 모든 열린 명명 된 파이프를 나열하는 기능을 우연히 발견했습니다.

이것에 대한 언급을 찾을 수없는 것 같고 저에게 매우 도움이 되었기 때문에 공유 할 수 있다고 생각했습니다.


좀 더 설명해 주시겠습니까?
Dieter Meemken

이것은 내 파이프를 나열합니다. 놀랄 만한! (Andrew Shepherd의 답변에서 알 수 있듯이 디렉토리처럼 작동하기 때문에 작동합니다.)
Martín Coll

크롬 이 명명 된 파이프를 많이 사용한다는 것을 알았 기 때문에 디버깅 / 진단을위한 것이라고 생각합니다. 크롬이 실행되지 않을 때에도 125 개의 "크롬"파이프를 발견했습니다 !
Cocowalla



7

두 번째 파이프는 제출 될 때이 웹 사이트에서 해석되었습니다. 처음에 두 개의 백 슬래시가 필요합니다. 따라서 System.IO.Directory.GetFiles (@ "\\. \ pipe \")를 사용해야합니다.

이 함수 호출이 '경로에 잘못된 문자'를 던지는 것을 보았습니다. 내 컴퓨터의 파이프 중 하나에 잘못된 문자가있는 경우 예외입니다. PipleList.exe는 정상적으로 작동했기 때문에 MS의 .net 코드의 버그처럼 보입니다.


1
'경로의 불법 문자'에 대한 메모는 프로그램이이를 트리거하는 파이프 이름을 여는 것이 매우 일반적이기 때문에 중요한 포인트입니다. 같은 이름의 파이프를 여는 프로그램은 C:\myLocation\someFile.x이 오류를 발생시킵니다.
dss539
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.