本機 Windows 命名管道失敗的原因有哪些?

本機 Windows 命名管道失敗的原因有哪些?

我一整天都在努力做這件事,但我被困住了。今天早上,我們的亞洲同事給我打電話,因為我們產品資料管理系統的 SolidWorks 外掛無法與本地主應用程式通訊。該問題影響 Windows 網域中的最終使用者電腦。我們使用 SQL Server 工具箱中的 READPIPE 和 MAKEPIPE 實用程式來找出根本問題是 Windows 管道功能。

  • MAKEPIPE 實用程式建立一個管道並正在等待客戶端。 READPIPE 實用程式傳回:“無法開啟管道。狀態 53。”根據http://support.microsoft.com/kb/110905這表示未找到網路名稱。在我的本機電腦上,管道從 READPIPE 向 MAKEPIPE 發送“hello”,沒有出現任何問題。
  • 啟用命名管道的伺服器進程正在運作。
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\Parameters 下的設定看起來沒問題。沒有管道防火牆設定。
  • 此問題影響部分用戶,但並非全部。除了一些網路共享組之外,我們沒有對域組進行更改。
  • 我以管理員身份登錄,管道仍然無法運作。

任何幫助表示讚賞!謝謝。

答案1

每個案例都需要 1.5 天的時間來解決。在這裡查看文件。

症狀

  • 拖放到應用程式中不起作用。
  • 進程間通訊(例如主應用程式和外掛程式之間)不起作用。

原因/背景

某些應用程式的進程間通訊是透過 Windows 命名管道(不要與 UNIX 樣式管道混淆)實現的。請參閱 MSDN 文件:http://msdn.microsoft.com/en-us/library/aa365590.aspx

Windows 名稱管道無法運作可能有多種原因。要驗證管道是否是問題的原因,可以使用 MAKEPIPE 和 READPIPE 工具。這篇知識庫文章描述了測試過程:http://support.microsoft.com/kb/68941 Sysinternals 工具程序資源管理器也可能有助於尋找目前開啟的管道。使用「尋找 -> 尋找句柄或 DLL...」選項並輸入模式「\Device\NamedPipe\」。它將顯示哪些進程打開了哪些管道。http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

故障排除

原因1:應用程式被Pipes防火牆阻止

Windows 可以阻止應用程式使用命名管道。此防火牆通常不啟用,而是透過註冊表進行配置。請參閱此處的 MS 支援文章:http://support.microsoft.com/kb/925890。檢查管道防火牆是否未啟用,或將 Keytech 和所有插件新增到允許的應用程式清單中。

原因2:文件和印表機共用服務未啟用。

命名管道由也控製檔案和印表機共用的進程啟用。使用 Windows 服務工具檢查此進程是否正在執行。服務名稱在服務清單中顯示為「Server」。服務名稱為 LanmanServer,EXE 為 C:\Windows\system32\svchost.exe -k netsvcs

原因 3:Windows 防火牆阻止 LanmanServer

Windows 防火牆可以阻止命名管道,即使它們僅用於同一台電腦上的進程間通訊。特別是網域和本機防火牆規則可能會導致衝突。 「Windows 防火牆允許的程式」清單中的兩個項目表示有衝突。在大多數情況下,可以透過使用「檢查防火牆狀態」視窗來解決此問題。如果此視窗顯示用於設定建議的防火牆規則的選項,通常可以使用此選項來解鎖管道。結合網域防火牆規則,有時需要先將 PC 從網域中取消加入,然後允許檔案和印表機共用服務。

相關內容