2
私はCOMサーバーをC++で記述し、ネットワーク上の一部のコンピュータで実行しています。クライアントは、他のコンピュータからのリモート呼び出しを実行することがあります。指定された呼び出しがローカル(同じコンピュータから)またはリモートの場合、COMサーバーのメソッドを内部でチェックするにはどうすればよいですか?COMメソッド呼び出しがローカルかリモートかを確認してください
私はCOMサーバーをC++で記述し、ネットワーク上の一部のコンピュータで実行しています。クライアントは、他のコンピュータからのリモート呼び出しを実行することがあります。指定された呼び出しがローカル(同じコンピュータから)またはリモートの場合、COMサーバーのメソッドを内部でチェックするにはどうすればよいですか?COMメソッド呼び出しがローカルかリモートかを確認してください
証明書ベースの認証サービスを使用しない場合、私はあなたが実際の認証サービスによってQueryBlanket
IServerSecurity::QueryBlanket([out] DWORD *pAuthnSvc..., [out] void** pPrivs, ...)
を見てみることをお勧め、pPrivsは、型のオブジェクトへのポインタを表すことができるSEC_WINNT_AUTH_IDENTITY 。この構造体には、クライアントのドメイン名が含まれます。サーバーのサーバーと一致するかどうかを簡単に確認できます。
1は、次のコードを使用して、サーバーのセキュリティオブジェクトのインスタンスを取得するには:あなたはあなたの本当の質問をしたほうが良いかもしれ
HRESULT hr;
CComQIPtr<IServerSecurity> ss;
if(FAILED(hr = ::CoGetCallContext(__uuidof(IServerSecurity), reinterpret_cast<void**>(&ss))))
throw com_exception(hr, "Unable to retrieve the server security object");
を。あなたはどんな問題に直面していますか?この質問に対する答えが解決すると思いますか? –