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


14

私は一日中これに一生懸命取り組んでいますが、行き詰っています。今朝、製品データ管理システムのSolidWorksアドインがローカルのメインアプリケーションと通信できなかったため、アジアの同僚から電話がありました。この問題は、Windowsドメインのエンドユーザーコンピューターに影響します。SQLサーバーツールボックスのREADPIPEおよびMAKEPIPEユーティリティを使用して、根本的な問題がWindowsパイプ機能であることがわかりました。

  • MAKEPIPE utilはパイプを作成し、クライアントを待機しています。READPIPE utilは、「パイプのオープンに失敗しました。ステータス53」を返します。http://support.microsoft.com/kb/110905によると、ネットワーク名が見つからなかったことを意味します。私のローカルコンピューターでは、パイプは問題なくREADPIPEからMAKEPIPEに「hello」を送信しました。
  • 名前付きパイプを有効にするサーバープロセスが実行されています。
  • HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Lanmanserver \ Parametersの下の設定は正常に見えます。パイプファイアウォール設定なし。
  • この問題はすべてのユーザーではなく一部のユーザーに影響します。一部のネットワーク共有グループを除き、ドメイングループには変更を加えませんでした。
  • 管理者としてログオンしましたが、それでもパイプは動作しません。

どんな助けも大歓迎です!ありがとうございました。


影響を受けるユーザーは、問題のサーバー上の通常のファイル共有に接続できますか?
ハリージョンストン

現在、共有に問題はありません。これはサーバー/クライアントの問題ではありません。両方のプロセスは同じコンピューター上にあります。
user152700

問題を再現し、影響を受けたコンピューターにREADPIPEとMAKEPIPEを使用して管理者としてログインした場合、使用している正確なコマンドは何ですか?(コメントを投稿するのではなく、投稿を編集してください。)
ハリージョンストン

ご協力ありがとうございました。これは難しいものでした。ここで解決策を文書化します。
user152700

回答:


12

すべてのケースでそれを把握するのに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:アプリケーションがパイプファイアウォールによってブロックされています

Windowsは、アプリケーションが名前付きパイプを使用するのをブロックできます。通常、このファイアウォールは有効になっておらず、レジストリを介して構成されています。:ここではMSのサポート記事を参照してくださいhttp://support.microsoft.com/kb/925890を。パイプファイアウォールが有効になっていないことを確認するか、Keytechとすべてのアドインを許可されたアプリケーションのリストに追加します。

原因2:ファイルとプリンターの共有サービスが有効になっていません。

名前付きパイプは、ファイルとプリンターの共有も制御するプロセスによって有効になります。Windowsサービスツールを使用して、このプロセスが実行されていることを確認します。サービス名は、サービスリストに「サーバー」と表示されます。サービス名はLanmanServerで、EXEはC:\ Windows \ system32 \ svchost.exe -k netsvcsです

原因3:WindowsファイアウォールがLanmanServerをブロックしている

Windowsファイアウォールは、同じマシン上のプロセス間通信にのみ使用される場合でも、名前付きパイプをブロックできます。特に、ドメインとローカルのファイアウォールルールは競合を引き起こす可能性があります。「Windows Firewall Allowed Programs」リストの2つのエントリは、競合を示しています。ほとんどの場合、この問題は「ファイアウォールステータスの確認」ウィンドウを使用して解決できます。このウィンドウに推奨ファイアウォールルールを設定するオプションが表示されている場合、多くの場合、このオプションを使用してパイプのブロックを解除できます。ドメインファイアウォールルールと組み合わせて、最初にドメインからPCの参加を解除してから、ファイルとプリンターの共有サービスを許可することが必要な場合があります。


3
原因1)パイプファイアウォールは、名前付きパイプへのリモートアクセスにのみ影響します。ただし、\\ machinename \ pipenameを使用して名前付きパイプに接続すると、machinenameがローカルマシンであっても、おそらくリモートアクセスとしてカウントされることに注意してください。
ハリージョンストン

3
原因2)同様に、ファイルとプリンターの共有は、名前付きパイプへのリモートアクセスにのみ必要です。繰り返しますが、\\ machinename \ pipenameはおそらくこの目的のためのリモートアクセスとしてカウントされます。
ハリージョンストン

原因3)\\ machinename \ pipenameを使用している場合でも、Windowsファイアウォールはローカル接続をブロックできません。ただし、ドメインにいて、Windowsファイアウォールの構成が不適切な場合、おそらく認証に関連する、より広範な問題が発生している可能性があります。
ハリージョンストン

@HarryJohnstonどのタイプの認証をブロックできますか?同様にServiceHost.Authentication説明したように、ここで
-iCantSeeSharp

ドメインにいて、ドメインコントローラーへのネットワークアクセスがWindowsファイアウォールによってブロックされている場合(または他の何らかの理由で)、認証できない場合があります。それは実際にはローカルパイプアクセスには影響しませんが、YMMVには影響します。
ハリージョンストン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.