У меня есть COM-сервер, написанный на C++, запущенный на некотором компьютере в сети. Клиенты могут выполнять удаленные вызовы с других компьютеров. Как проверить внутри метода COM-сервера, если данный вызов является локальным (с того же компьютера) или удаленным?Проверьте, является ли вызов COM-метода локальным или удаленным
2
A
ответ
2
Если вы не используете службу проверки подлинности сертификата на основе, я предлагаю вам взглянуть на QueryBlanket
IServerSecurity::QueryBlanket([out] DWORD *pAuthnSvc..., [out] void** pPrivs, ...)
В зависимости от фактической службы аутентификации, pPrivs может представлять собой указатель на объект типа SEC_WINNT_AUTH_IDENTITY , Эта структура содержит имя домена клиента. Таким образом, вы можете легко проверить, соответствует ли он серверу.
Чтобы получить экземпляр объекта безопасности сервера можно использовать следующий код:
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");
Смежные вопросы
- 1. Как определить, является ли вызов EJB удаленным или локальным клиентом
- 2. Как сервер может определить, является ли клиент локальным или удаленным?
- 3. Как определить, является ли MarshalByRefObject локальным или удаленным?
- 4. Как определить, является ли SQL Server локальным или удаленным?
- 5. Проверьте, является ли запрос локальным хостом
- 6. Проверьте, является ли NSURL локальным файлом
- 7. Проверьте, является ли папка локальным или сетевым ресурсом в .NET.
- 8. Как определить сделанный вызов является локальным или STD ИЛИ ISD
- 9. Проверьте, является ли вызов функции определением переменной
- 10. Проверьте, является ли пользователь локальным администратором на внешнем компьютере
- 11. Проверьте, является ли вызов методом цепочки
- 12. Проверьте, является ли вызов методом цепочки PHP
- 13. Непоследовательные результаты между удаленным и локальным запросом
- 14. Проверьте, является ли пользователь процесса администратором C++
- 15. Git, работающий между локальным филиалом и удаленным
- 16. Проверьте, является ли число четным или нечетным
- 17. Проверьте, является ли символ алфавитом или цифрой?
- 18. Проверьте, является ли сайт HTTP или HTTPS
- 19. Проверьте, является ли функция асинхронной или нет?
- 20. Проверьте, является ли символ lowerCase или upperCase
- 21. Проверьте, является ли переменная компонентом или Boolean
- 22. Проверьте, является ли mail.domain.com POP или IMAP
- 23. Проверьте, является ли файл изображением или видеороликом
- 24. Проверьте, является ли fstream файлом или каталогом
- 25. Проверьте, является ли изображение цветным или нет
- 26. Проверьте, является ли переменная списком или кортежем
- 27. Проверьте, является ли список или строка палиндром
- 28. Проверьте, является ли Object словарем или списком
- 29. Проверьте, является ли переменная числом или массивом
- 30. Проверьте, является ли символ гласным или согласным?
Вы можете быть лучше спрашивать ваш реальный вопрос. С какой проблемой вы сталкиваетесь, что думаете, что ответ на этот вопрос будет решаться? –