質問

私は、名前付きパイプで私のWindowsサービスにCGIプロセスを接続しようとしています。 私のコードは、私の開発マシン上で別のサーバーを使用して細かい動作しますが、私はCGIプロセスでのCreateFile()を呼び出したときにIIS上のセキュリティ問題があります。

Windowsサービスは、名前付きパイプサーバーですので、CGIプロセスがクライアントとしてその名前付きパイプに接続しようとしている。

私は呼び出すことによって、フラグSECURITY_WORLD_SID_AUTHORITYとグローバルセキュリティ記述子を作成し、いくつかのコードを掘っています:

  InitializeAcl()
  AddAccessAllowedAce()
  SetSecurityDescriptorDacl()

しかし、私は本当にコンセプトを理解していけません。 私はパイプサーバーCreateNamedPipe()が名前付きパイプのクライアントについては、このSECURITY_ATTRIBUTES構造のACLが、何と呼ばなければならないことを想定しています!

私は別のグローバルセキュリティ記述子を作成し、それとのCreateFile()を呼び出しますか?

タグで、私はそれを継承しています
 SecurityAttributes.bInheritHandle   = TRUE;

私はただのCreateFileにnullを渡してください()を呼び出す?

役に立ちましたか?

解決

パイプがサーバーによって作成されているので、

、唯一のサーバーは、クライアントがACLのためにNULL使用し、ACLを指定する必要があります。

名前付きパイプは、1つのプロセスで作成され、それが値を取得し、むしろプロセスは、あなたが生成されたプロセスは、ハンドルへの直接アクセスを持っていることを先に新しいプロセスを作成すること(それは、ハンドルを再開しない場合は、

の継承にのみ適用されますコマンドラインのようないくつかの他の方法で、)。

あなたは見るために命名する Sysinternalsの上のプロセスエクスプローラを使用することができますその後、プロセス内のオープンパイプとACLを見てください。

scroll top