アウトプロセス COM サーバー (別のマシン上) 用の C++ ラッパーを作成しようとしています。このクラスのユーザーから、COM 関連の不快感をすべて隠したいと思っています。
セキュリティ要件により、サーバー プロキシで CoSetSecurityBlanket を呼び出す必要があります。あれは:
CoCreateInstance(CLSID_OutOfProcServer, &proxy);
CoSetProxyBlanket(proxy);
(多くのパラメーターを省略しました)。さらに、サーバーにはローカル アカウントが必要なため、この呼び出しで資格情報を指定する必要があります。
ここで問題です。このサーバーには、インターフェイスを返すメソッドが多数あり、これらのインターフェイスのそれぞれが、私の側ではまったく新しいプロキシです。したがって、CoSetProxyBlanket()
1つ取得するたびに電話する必要があります。これが私が達成したいことです:
- ラッパーに CoSetProxyBlanket 呼び出しを非表示にさせます (簡単です)。
- クレデンシャルをメモリに保存しないでください(非常に困難です!)
これまでのところ、 と を使用して、ブランケットをあるオブジェクトから別のオブジェクトにコピーしようとしましCoQueryProxyBlanket
たCoSetProxyBlanket
。資格情報を回復できないため、これは機能しません (資格情報をメモリに保存しない限り、これは避けたいと思います)。
本当にイライラするのは、サーバーへの認証済み接続があることです。そのセキュリティ コンテキストを新しいプロキシにコピーできるはずです。(または、少なくとも新しいプロキシを作成するときに、COM にこれを行うように指示してください。)これを行う方法はありますか、それとも資格情報の保存に行き詰まっていますか?