2013年6月24日 星期一

[named pipe] 列出本機已開啟的 named pipe

Named pipe 在 windows 上,是個很常用的 IPC (Interprocess Communication)。

如果下載 pipelist (註1),執行後會列出電腦上已有的 named pipe 的名字。

我執行後嚇一跳,還真是多。

 

利用 c# 也可以寫程式把這些名字列出來。

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

可惜的是,如果電腦上有開啟 vmware,就會有 named pipe 的名字有帶磁碟機符號。

那麼,就會出現以下的錯誤:

System.ArgumentException: 第二個路徑片段不可以是磁碟機或 UNC 名稱。
參數名稱: path2
   於 System.IO.Path.InternalCombine(String path1, String path2)
   於 System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)
   於 System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption)
   於 System.IO.Directory.GetFiles(String path)

這問題,我目前還沒有辦法解決。

所以,pipelist 湊合著用吧。

 

註1:http://technet.microsoft.com/en-us/sysinternals/dd581625.aspx

參考:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx

http://stackoverflow.com/questions/258701/how-can-i-get-a-list-of-all-open-named-pipes-in-windows

沒有留言:

張貼留言