Чи є простий спосіб перевірити, чи правильно працює ваша названа труба? Я хочу переконатися, що дані, які я надсилаю з мого додатка, насправді надсилаються. Чи є швидкий і простий спосіб отримати список усіх названих труб?
Відповіді:
Ви можете переглянути їх за допомогою Process Explorer із sysinternals. Скористайтесь опцією "Знайти -> Знайти ручку або DLL ..." і введіть шаблон "\ Device \ NamedPipe \". Він покаже вам, які процеси мають відкриті труби.
pipelist.exe
з SysInternals ще простіше, але це лише командний рядок.
В консолі Windows Powershell введіть
[System.IO.Directory]::GetFiles("\\.\\pipe\\")
get-childitem \\.\pipe\
Це повертає список об’єктів. Якщо ви хочете лише ім'я:
(get-childitem \\.\pipe\).FullName
Спробуйте замість цього:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
pipe
?
Використовуйте pipelist.exe від Sysinternals.
Я наткнувся на функцію в Chrome, яка перелічить усі відкриті іменовані канали, перейшовши до "file: //.//pipe//"
Оскільки я, здається, не можу знайти жодного посилання на це, і це мені дуже допомогло, я подумав, що можу поділитися.
C #:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
За CMD
запитом:
>ver
Microsoft Windows [Version 10.0.18362.476]
>dir \\.\pipe\\
Другий конвеєр був інтерпретований цим веб-сайтом при поданні ... На початку потрібні дві зворотні скісні риски. Тож обов’язково використовуйте System.IO.Directory.GetFiles (@ "\\. \ Pipe \").
Зверніть увагу, що я бачив, як цей виклик функції викидає "нелегальні символи у шляху". виняток, коли одна з труб на моїй машині мала недійсні символи. PipleList.exe все ж працював нормально, тому це здається помилкою в .net-коді MS.
C:\myLocation\someFile.x
, спричинить цю помилку.