Как определить, был ли процесс локального сервера запущен COM?
У меня есть приложение, которое поддерживает автоматизацию COM вне процесса. Теперь я хочу, чтобы он мог вести себя по-разному, когда он запускается пользователем и когда он запускается COM для обслуживания запроса автоматизации. Как я могу отличить эти случаи в приложении?
Поиск в Google ничего не принес, и единственная идея, которая у меня есть, - определить родительский процесс, но я не уверен, насколько хрупким он будет.
1 ответ
Когда COM запускает локальный внепроцессный сервер, он ищет в реестре путь к хост-процессу и добавляет параметр командной строки "-Embedding". Это то место, где вы должны смотреть, чтобы соответственно обнаружить запуск COM.
Поведение документировано здесь:
COM добавляет флаг "-Embedding" к строке, поэтому приложение, использующее флаги, должно проанализировать всю строку и проверить наличие флага -Embedding.