Как определить, был ли процесс локального сервера запущен COM?

У меня есть приложение, которое поддерживает автоматизацию COM вне процесса. Теперь я хочу, чтобы он мог вести себя по-разному, когда он запускается пользователем и когда он запускается COM для обслуживания запроса автоматизации. Как я могу отличить эти случаи в приложении?

Поиск в Google ничего не принес, и единственная идея, которая у меня есть, - определить родительский процесс, но я не уверен, насколько хрупким он будет.

1 ответ

Решение

Когда COM запускает локальный внепроцессный сервер, он ищет в реестре путь к хост-процессу и добавляет параметр командной строки "-Embedding". Это то место, где вы должны смотреть, чтобы соответственно обнаружить запуск COM.

Поведение документировано здесь:

COM добавляет флаг "-Embedding" к строке, поэтому приложение, использующее флаги, должно проанализировать всю строку и проверить наличие флага -Embedding.

Другие вопросы по тегам