Windows デベロッパー センター > Windows クライアント開発 フォーラム > Windows クライアント開発 - 全般 > 名前付きパイプのクライアント接続でLastError 0x000004F1が発生
質問する質問する
 

質問名前付きパイプのクライアント接続でLastError 0x000004F1が発生

  • 2009年9月1日 7:37super_beer ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    Windowsサービス内で2つのPC間での名前付きパイプによる通信を行うようなプログラムを組んでいるのですが、
    サーバ側のプログラムを動作させている状態で、クライアント接続側でCreateFileによる失敗が発生し、
    LastErrorが0x000004F1という、エラーが返っています。

    セキュリティ上の問題という事のようですが、何が原因なのかさっぱりわかりません。
    接続可能なPCとそうでないPCとがあり、一概にコードが間違っているような事ではないようです。
    OSはWindows XP SP3を使用しています。

    何かアドバイスを頂けたら幸いです。

すべての返信

  • 2009年9月1日 15:00KKamegawa ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    確かにERROR_DOWNGRADE_DETECTEDなので、強力な暗号化があるクライアントでは有効になっていないという場合があるようですね。NT4.0とWindows Server 2008の通信時に発生する問題だそうですが、こちらも参考になるのではないでしょうか(プログラムの解決ではありません)。

    http://support.microsoft.com/kb/942564


    Thanks, K.Kamegawa (http://d.hatena.ne.jp/kkamegawa/)
  • 2009年9月2日 1:41super_beer ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    レスポンスありがとうございます。

    リンク先の内容を確認しましたが、今回の内容とは直接関係が無いようでした。
    ただ、ERROR_DOWNGRADE_DETECTEDの原因は多岐にわたるようなコメントがあるので、
    簡単に原因が分からなさそうですね。

  • 2009年9月2日 5:58super_beer ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    一応の問題解決ができましたが、、、直接の原因はいまだ不明です。
    解決方法を見て分かる方がいれば、返信いただけると幸いです。

    で、解決方法ですが、
    Windowsサービスの中でPC間で通信を行うため、パイプを扱うスレッドがSYSTEMアカウントで
    動作していました。
    本件の場合、セキュリティ系が問題のようなので、通信を行うスレッドを特定のユーザアカウントで偽装し、
    さらにスレッドに適用したユーザアカウントのみがアクセスできるようにセキュリティ属性を指定して
    パイプを生成する事で接続できました。

    ただ、この方法を行わなくてもXP SP3同士で接続できるマシンもあったので、何らかのOS設定等が
    関係しているのかもしれません。