uday vichare Ответов: 0

Не удается вызвать COM-компоненты из службы windows


У меня есть служба Windows, которая запускает одно приложение. это приложение имеет некоторый компонент COM, который можно использовать для выполнения различных операций с приложением. с помощью этих компонентов COM можно войти в приложение, создать нового пациента, выбрать пациента, выбрать тест и т. д. Все эти методы COM отлично работают с консольным приложением. но когда я пытаюсь сделать то же самое со службой Windows, она не работает. Я могу запустить приложение, сделав его интерактивным, но компонент COM по-прежнему не работает. когда я заглянул в приложение, я заметил, что пациент добавляется в приложение, но процесс не виден. он не входит в систему и выбирает пациента. Есть ли способ добиться этого? пожалуйста помоги!!

Что я уже пробовал:

Пробовал интерактивную службу windows, но только запускает приложения, а com-компонент работает не видно

F-ES Sitecore

Сервисы не подходят для вещей, которые требуют взаимодействия или вещей, которые должны быть видны на рабочем столе. Службы не имеют доступа к рабочему столу, и помните, что они все еще работают, когда никто не вошел в систему вообще.

uday vichare

Ладно...я понимаю...но есть ли какой-нибудь способ добиться этого?..

F-ES Sitecore

Мы действительно не знаем, чего вы пытаетесь достичь. Запланированные задачи-это, возможно, следующая лучшая вещь, которую вы можете использовать.

uday vichare

У меня есть приложение, которое предоставило мне некоторые COM-компоненты для взаимодействия с этим приложением. Я хочу использовать эти COM-компоненты в своей службе windows.
например, используя метод Login класса COM, я могу войти в приложение. Используя метод выбора пациента, я могу выбрать определенного пациента в приложении. когда я попробовал это сделать с консольным приложением, оно работало нормально, но не работает со службой windows.

CHill60

Службы Windows-это нет подходит для вещей, требующих взаимодействия с пользователем, или вещей, которые должны быть видны на рабочем столе.
Почему вы пытаетесь сделать это услугой?

uday vichare

Я знаю, что это не подходит, это не мое решение сделать это услугой, и у меня нет полномочий менять структуру проекта. так что это мое требование, что я должен создать сервис, который будет взаимодействовать с рабочим столом и использовать COM-компоненты! есть ли какой-нибудь способ? или это невозможно?

CHill60

Я не знаю другого способа объяснения-это невозможно. Службы не имеют доступа к рабочему столу и все еще работают, даже если никто не вошел в систему ... А @Ф-Эс-технологического оборудования, - сказал раньше.
Если кто-то сказал вам сделать это услугой, когда требуется взаимодействие с пользователем, то вам нужно вежливо сказать ему, что он не знает, что делает (или что он идиот, если вы предпочитаете)

Philippe Mori

Даже если бы это было возможно, вы не должны этого делать. Хорошо известно, что сервис не должен взаимодействовать с рабочим столом, поэтому перестаньте это делать. Если вам нужно взаимодействовать с пользователем, то создайте приложение, которое будет запускаться под его учетной записью. Перестаньте пытаться взломать систему или слушать глупые требования.

Garth J Lancaster

это может (а может и не помочь) https://www.codeproject.com/Articles/1159908/Yes-I-Know-But-I-Still-Want-a-GUI-for-my-Windows-S .. основная проблема заключается в том, что служба не входит в систему как обычный пользователь, поэтому у нее нет "среды" - улья реестра и т. д. - Один из способов обойти это *может* состоять в том, чтобы создать обычный профиль пользователя для службы, добавить другие привилегии к этому профилю и использовать его для службы

но, как уже отмечалось, любой, кто просит вас сделать это, не знает, что он делает

0 Ответов