Служба Windows не смогла получить скриншот в Windows 7

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

1- Есть ли способ изменить сеанс службы Windows и получить экран рабочего стола другого пользователя, например сеанс 1, сеанс 2?

2- Есть ли способ запустить консольное приложение, которое выполняется в другом сеансе, отличном от сеанса 0, из службы Windows?

Есть ли способ изменить сеанс службы Windows и получить экран рабочего стола другого пользователя, например сеанс 1, сеанс 2?

Нет.

Есть ли способ запустить консольное приложение, которое выполняется в другом сеансе, отличном от сеанса 0, из службы Windows?

Это можно сделать, но это грязно. Он включает в себя олицетворение зарегистрированного пользователя, манипулирование токенами пользователей и запуск процесса в другой сеанс с помощью CreateProcessAsUser() . В этой статье описывается, что необходимо.

В стороне, вы не хотите консольное приложение, потому что оно будет отображать консольное окно на снимке экрана. Вам просто нужно стандартное приложение Windows (с использованием подсистемы GUI), но оно не отображает видимых окон.

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

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

Я говорю здесь, что вместо того, чтобы служба Windows работала в другом сеансе, чем 0, вы можете создать небольшой исполняемый файл (возможно, без какого-либо интерфейса), который запускается из папки запуска всех пользователей при каждом входе в систему. такое приложение затем запускается внутри надлежащего сеанса и имеет к нему доступ, оно может получить скриншот, затем либо хранить его где-то самостоятельно, либо называть некоторые конечные точки в вашей службе Windows (работает всегда в сеансе 0) и заставлять службу разрабатывать скриншот взятый из клиентского приложения.

так я бы это сделал, не попробовав «волшебство», чтобы сказать Vista и 7, чтобы запустить службу внутри сеанса пользователя, который в конце еще не вошел в систему, когда система запускается.

  • Служба зависает в WaitForExit после вызова командного файла
  • Печать из службы .NET
  • Как программно установить Windows-сервис на C #?
  • FileSystemWatcher Не удается получить доступ к сетевому диску
  • Глобальный обработчик исключений для служб Windows?
  • Печать html-документа из Windows Service без диалога печати
  • показать форму windows из windows службы
  • Установите службу Windows .NET без InstallUtil.exe
  • Как я могу перезапустить службу Windows программно в .NET.
  • Как связаться с сервисом Windows из приложения, которое взаимодействует с рабочим столом?
  • Служба Windows, не показанная в приложении, удаляет программы под панелью управления
  • Давайте будем гением компьютера.