4

アウトプロセス COM サーバー (別のマシン上) 用の C++ ラッパーを作成しようとしています。このクラスのユーザーから、COM 関連の不快感をすべて隠したいと思っています。

セキュリティ要件により、サーバー プロキシで CoSetSecurityBlanket を呼び出す必要があります。あれは:

CoCreateInstance(CLSID_OutOfProcServer, &proxy);
CoSetProxyBlanket(proxy);

(多くのパラメーターを省略しました)。さらに、サーバーにはローカル アカウントが必要なため、この呼び出しで資格情報を指定する必要があります。

ここで問題です。このサーバーには、インターフェイスを返すメソッドが多数あり、これらのインターフェイスのそれぞれが、私の側ではまったく新しいプロキシです。したがって、CoSetProxyBlanket()1つ取得するたびに電話する必要があります。これが私が達成したいことです:

  1. ラッパーに CoSetProxyBlanket 呼び出しを非表示にさせます (簡単です)。
  2. クレデンシャルをメモリに保存しないでください(非常に困難です!)

これまでのところ、 と を使用して、ブランケットをあるオブジェクトから別のオブジェクトにコピーしようとしましCoQueryProxyBlanketCoSetProxyBlanket。資格情報を回復できないため、これは機能しません (資格情報をメモリに保存しない限り、これは避けたいと思います)。

本当にイライラするのは、サーバーへの認証済み接続があることです。そのセキュリティ コンテキストを新しいプロキシにコピーできるはずです。(または、少なくとも新しいプロキシを作成するときに、COM にこれを行うように指示してください。)これを行う方法はありますか、それとも資格情報の保存に行き詰まっていますか?

4

1 に答える 1