Screenshot des Prozesses unter Windows Service

Wir müssen einen Prozess von einem Windows-Dienst ausführen und einen Screenshot davon erhalten.

Wir haben versucht, BitBlt und PrintWindow Win32 aufzurufen, aber beide geben leere (schwarze) Bitmaps.

Wenn wir unseren Code von einem normalen Benutzerprozess ausführen, funktioniert er einwandfrei.

Ist das überhaupt möglich? Oder könnte es eine andere Methode geben, um es zu versuchen?

Dinge, die wir versucht haben:

Windows-Dienst läuft als lokales System, läuft als lokales System -> Screenshot schlägt fehlWindows-Dienst läuft als Administrator, läuft als Administrator -> Screenshot schlägt fehl.Windows-Anwendung läuft als Benutzer XYZ, führt einen Prozess als XYZ aus -> Screenshot funktioniert sowohl mit BitBlt als auch mit PrintWindow.Es wurde versucht, die Option "Dienst darf mit dem Desktop interagieren" im lokalen System zu aktivieren

Wir haben auch festgestellt, dass PrintWindow in unserem Fall besser funktioniert, wenn sich das Fenster hinter einem anderen Fenster befindet.

Für andere Anforderungen müssen sich der übergeordnete und der untergeordnete Prozess unter demselben Benutzer befinden. Wir können nicht wirklich Identitätswechsel von einem Prozess zum anderen verwenden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage