Есть COM сервер, реализованный в exe.
Пользователь должен сам запустить exe-шник, когда захочет чтобы COM сервер стал доступным.
Когда экземпляр COM сервера создается с другого компьютера (соответственно и эккаунт другой — это важно !), то запускается новый процесс под этим "другим" эккаунтом (если эккаунт тотже самый, то новый процесс не создается).
Нужно, чтобы новый процесс не создавался и всегда использовалась уже зарегистрированная фабрика классов.
Здравствуйте, Driver, Вы писали:
D>Есть COM сервер, реализованный в exe. D>Пользователь должен сам запустить exe-шник, когда захочет чтобы COM сервер стал доступным. D>Когда экземпляр COM сервера создается с другого компьютера (соответственно и эккаунт другой — это важно !), то запускается новый процесс под этим "другим" эккаунтом (если эккаунт тотже самый, то новый процесс не создается).
D>Нужно, чтобы новый процесс не создавался и всегда использовалась уже зарегистрированная фабрика классов.
D>Как это можно сделать программно ?
D>Спасибо, D>Alex.
Обсуждали 3 — мя ветками ниже. В dcomcnfg.exe укажи запускаться от интерактивного пользователя.
Здравствуйте, Tom, Вы писали:
Tom>Здравствуйте, Driver, Вы писали:
D>>Есть COM сервер, реализованный в exe. D>>Пользователь должен сам запустить exe-шник, когда захочет чтобы COM сервер стал доступным. D>>Когда экземпляр COM сервера создается с другого компьютера (соответственно и эккаунт другой — это важно !), то запускается новый процесс под этим "другим" эккаунтом (если эккаунт тотже самый, то новый процесс не создается).
D>>Нужно, чтобы новый процесс не создавался и всегда использовалась уже зарегистрированная фабрика классов.
D>>Как это можно сделать программно ?
D>>Спасибо, D>>Alex.
Tom>Обсуждали 3 — мя ветками ниже. В dcomcnfg.exe укажи запускаться от интерактивного пользователя.
Как быть если никто на машине не залогинен ?
(Тут небольшая поправка: exe-шник могут запустить пользователь или система)
Здравствуйте, Driver, Вы писали:
D>Как быть если никто на машине не залогинен ? D>(Тут небольшая поправка: exe-шник могут запустить пользователь или система)
Как раз для этого существуют NT-сервисы и учетная запись LocalSystem.
Здравствуйте, MaximE, Вы писали:
D>>Как быть если никто на машине не залогинен ? D>>(Тут небольшая поправка: exe-шник могут запустить пользователь или система) ME>Как раз для этого существуют NT-сервисы и учетная запись LocalSystem.
Сервисы — это здорово, но чтобы сделать из out-of-process сервис — придется поработать.
От себя могу предложить в dcomcnfg выбрать тип 'Identity' — This User. Это позволит запускать out-of-process независимо от того, есть интерактивный пользователь или нет.
Здравствуйте, Ivan, Вы писали:
ME>>Как раз для этого существуют NT-сервисы и учетная запись LocalSystem.
I>Сервисы — это здорово, но чтобы сделать из out-of-process сервис — придется поработать. I>От себя могу предложить в dcomcnfg выбрать тип 'Identity' — This User. Это позволит запускать out-of-process независимо от того, есть интерактивный пользователь или нет.
Как-то я утомился от неидеального мира и компромиссов
Пора создавать идеальный: если надо поработать — значит работать — труды окупятся сторицей.
Здравствуйте, MaximE, Вы писали:
ME>Пора создавать идеальный: если надо поработать — значит работать — труды окупятся сторицей.
Ага, особенно если это сопровождение уже реализованной (возможно, кем-то другим ) системы — автору топика идея переписать COM-сервер в виде сервиса вряд ли понравится . А еще [имхо] сервисы имеют свои особенности и с ними надо разбираться — код ATL визарда для сервиса далек от совершенства
Здравствуйте, Ivan, Вы писали:
I>Здравствуйте, MaximE, Вы писали:
ME>>Пора создавать идеальный: если надо поработать — значит работать — труды окупятся сторицей. I>Ага, особенно если это сопровождение уже реализованной (возможно, кем-то другим ) системы — автору топика идея переписать COM-сервер в виде сервиса вряд ли понравится . А еще [имхо] сервисы имеют свои особенности и с ними надо разбираться — код ATL визарда для сервиса далек от совершенства I>
Все мы несовершенны. Как говорится лучшее — враг хорошего.