Adakah cara mudah untuk menguji apakah pipa bernama Anda berfungsi dengan benar? Saya ingin memastikan bahwa data yang saya kirim dari aplikasi saya benar-benar terkirim. Adakah cara cepat dan mudah untuk mendapatkan daftar semua pipa bernama?
Jawaban:
Anda dapat melihatnya dengan Process Explorer dari sysinternals. Gunakan opsi "Temukan -> Temukan Tangani atau DLL ..." dan masukkan pola "\ Device \ NamedPipe \". Ini akan menunjukkan kepada Anda proses mana yang memiliki pipa terbuka.
pipelist.exe
dari SysInternals bahkan lebih sederhana, tetapi itu hanya baris perintah.
Di konsol Windows Powershell, ketik
[System.IO.Directory]::GetFiles("\\.\\pipe\\")
get-childitem \\.\pipe\
Ini mengembalikan daftar objek. Jika Anda ingin namanya saja:
(get-childitem \\.\pipe\).FullName
(Contoh kedua \\.\pipe\
tidak berfungsi di Powershell 7, tetapi contoh pertama berfungsi)
Coba yang berikut ini sebagai gantinya:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
pipe
asalnya?
Gunakan pipelist.exe dari Sysinternals.
Saya menemukan fitur di Chrome yang akan mencantumkan semua pipa bernama terbuka dengan menavigasi ke "file: //.//pipe//"
Karena saya tidak dapat menemukan referensi apa pun tentang ini dan itu sangat membantu saya, saya pikir saya dapat berbagi.
C #:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
Pada CMD
prompt:
>ver
Microsoft Windows [Version 10.0.18362.476]
>dir \\.\pipe\\
Pipa kedua diinterpretasikan oleh situs web ini ketika dikirim ... Anda membutuhkan dua garis miring terbalik di awal. Jadi pastikan untuk menggunakan System.IO.Directory.GetFiles (@ "\\. \ Pipe \").
Perhatikan bahwa saya telah melihat panggilan fungsi ini melontarkan 'karakter ilegal di jalur'. pengecualian ketika salah satu pipa di mesin saya memiliki karakter yang tidak valid. PipleList.exe bekerja dengan baik, jadi sepertinya ada bug di kode .net MS.
C:\myLocation\someFile.x
akan menyebabkan kesalahan ini.