Как я могу получить список всех открытых именованных каналов в Windows?
Вопрос
Есть ли простой способ проверить, правильно ли работает ваш именованный канал?Я хочу убедиться, что данные, которые я отправляю из своего приложения, действительно отправляются.Есть ли быстрый и простой способ получить список всех именованных каналов?
Решение
Вы можете просмотреть их с помощью Process Explorer из sysinternals. Используйте " Найти - > Найти дескриптор или DLL ... " и введите шаблон " \ Device \ NamedPipe \ " ;. Он покажет вам, какие процессы имеют какие каналы открыты.
Другие советы
Попробуйте вместо этого следующее:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
В консоли Windows Powershell введите
[System.IO.Directory]::GetFiles("\\.\\pipe\\")
Если версия вашей операционной системы выше Windows 7, вы также можете ввести
get-childitem \\.\pipe\
Используйте pipelist.exe от Sysinternals.
C#:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
Я наткнулся на функцию в Chrome, которая перечислит все открытые именованные каналы, перейдя к файлу: //.//pipe//"
Так как я не могу найти какую-либо ссылку на это, и это было очень полезно для меня, я подумал, что могу поделиться.
Второй канал был интерпретирован этим веб-сайтом при отправке ... В начале вам нужны две обратные косые черты. Поэтому обязательно используйте System.IO.Directory.GetFiles (@ " \\. \ Pipe \ ").
Обратите внимание, что я видел, как этот вызов функции выбрасывал «недопустимые символы в пути». исключение, когда один из каналов на моей машине имел недопустимые символы. Хотя PipleList.exe работал нормально, поэтому похоже на ошибку в MS-коде MS.