2012-03-02 12 views
2

私はCOMサーバーをC++で記述し、ネットワーク上の一部のコンピュータで実行しています。クライアントは、他のコンピュータからのリモート呼び出しを実行することがあります。指定された呼び出しがローカル(同じコンピュータから)またはリモートの場合、COMサーバーのメソッドを内部でチェックするにはどうすればよいですか?COMメソッド呼び出しがローカルかリモートかを確認してください

+0

を。あなたはどんな問題に直面していますか?この質問に対する答えが解決すると思いますか? –

答えて

2

証明書ベースの認証サービスを使用しない場合、私はあなたが実際の認証サービスによって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"); 
関連する問題