Служба Windows не смогла получить скриншот в Windows 7
У меня есть служба Windows, которая получает скриншоты. Но он создает только черные экраны. Я знаю, что это происходит из-за изоляции сеанса 0. Я искал в Интернете и не мог найти одобренного решения для этой проблемы, любые рабочие идеи будут действительно хорошими.
1- Есть ли способ изменить сеанс службы Windows и получить экран рабочего стола другого пользователя, например сеанс 1, сеанс 2?
2- Есть ли способ запустить консольное приложение, которое выполняется в другом сеансе, отличном от сеанса 0, из службы Windows?
- В чем причина внезапного прекращения моей службы приложений?
- Как изменить тип запуска Windows Service в .NET (после установки)?
- Я работаю как служба
- Установка программного обеспечения Windows программно
- Автоматизация Office через службу Windows на сервере 2008
- Ошибка5: доступ запрещен при перезапуске службы журнала событий
- Служба Windows для постоянной работы
- Интерфейс GUI и Windows
- Delphi 2009: Как взаимодействовать между Windows и настольным приложением под Vista?
- Как запустить MongoDB в качестве службы Windows?
- Как запустить CMD.exe под учетной записью локальной системы?
- Как получить список зарегистрированных пользователей / подключенных пользователей в .NET?
- Как служба Windows может выполнить приложение GUI?
Есть ли способ изменить сеанс службы Windows и получить экран рабочего стола другого пользователя, например сеанс 1, сеанс 2?
Нет.
Есть ли способ запустить консольное приложение, которое выполняется в другом сеансе, отличном от сеанса 0, из службы Windows?
Это можно сделать, но это грязно. Он включает в себя олицетворение зарегистрированного пользователя, манипулирование токенами пользователей и запуск процесса в другой сеанс с помощью CreateProcessAsUser()
. В этой статье описывается, что необходимо.
В стороне, вы не хотите консольное приложение, потому что оно будет отображать консольное окно на снимке экрана. Вам просто нужно стандартное приложение Windows (с использованием подсистемы GUI), но оно не отображает видимых окон.
служба Windows предназначена для запуска также, когда нет подключенных пользователей, она работает как серверный процесс всегда и прислушивается, или что-то делает, и делает что-то, или простое.
Я думаю, что вам нужно клиентское приложение, которое запускается внутри каждого сеанса зарегистрированных пользователей и в конечном итоге выполняет задание, а при необходимости связывается с сервисом для выполнения определенной работы.
Я говорю здесь, что вместо того, чтобы служба Windows работала в другом сеансе, чем 0, вы можете создать небольшой исполняемый файл (возможно, без какого-либо интерфейса), который запускается из папки запуска всех пользователей при каждом входе в систему. такое приложение затем запускается внутри надлежащего сеанса и имеет к нему доступ, оно может получить скриншот, затем либо хранить его где-то самостоятельно, либо называть некоторые конечные точки в вашей службе Windows (работает всегда в сеансе 0) и заставлять службу разрабатывать скриншот взятый из клиентского приложения.
так я бы это сделал, не попробовав «волшебство», чтобы сказать Vista и 7, чтобы запустить службу внутри сеанса пользователя, который в конце еще не вошел в систему, когда система запускается.