ローカル Windows 名前付きパイプが失敗する理由は何ですか?

ローカル Windows 名前付きパイプが失敗する理由は何ですか?

私は一日中この問題に取り組んできましたが、行き詰まっています。今朝、アジア人の同僚から電話があり、製品データ管理システムの SolidWorks アドインがローカルのメイン アプリケーションと通信できないとのことでした。この問題は、Windows ドメインのエンド ユーザー コンピューターに影響します。SQL サーバー ツールボックスの 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 ツールを使用できます。この KB 記事では、テスト手順について説明しています。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 ファイアウォールの許可されたプログラム] リストに 2 つのエントリがある場合は、競合が発生しています。ほとんどの場合、この問題は [ファイアウォールの状態の確認] ウィンドウを使用して解決できます。このウィンドウに推奨されるファイアウォール ルールを設定するオプションが表示されている場合は、このオプションを使用してパイプのブロックを解除できることがよくあります。ドメイン ファイアウォール ルールと組み合わせる場合は、最初に PC をドメインから切断してから、ファイルとプリンターの共有サービスを許可する必要があります。

関連情報