Zrzut ekranu procesu w usłudze Windows

Musimy uruchomić proces z usługi Windows i pobrać z niego zrzut ekranu.

Wypróbowaliśmy wywołania BitBlt i PrintWindow Win32, ale oba dają puste (czarne) bitmapy.

Jeśli uruchomimy nasz kod z normalnego procesu użytkownika, działa to dobrze.

Czy to jest możliwe? Czy może istnieje inna metoda wypróbowania?

Rzeczy, które próbowaliśmy:

Usługa Windows działająca jako System lokalny, uruchamia proces jako System lokalny -> zrzut ekranu nie działaUsługa Windows działająca jako Administrator uruchamia proces jako Administrator -> zrzut ekranu nie działa.Aplikacja Windows działająca jako użytkownik XYZ, uruchamia proces jako XYZ -> zrzut ekranu działa zarówno z BitBlt jak i PrintWindow.Wypróbowano sprawdzanie „Zezwalaj usłudze na interakcję z pulpitem” z systemu lokalnego

Zauważyliśmy również, że PrintWindow działa lepiej w naszym przypadku, działa, jeśli okno znajduje się za innym oknem.

W przypadku innych wymagań zarówno proces nadrzędny, jak i podrzędny muszą należeć do tego samego użytkownika. Nie możemy naprawdę używać personifikacji z jednego procesu do drugiego.

questionAnswers(4)

yourAnswerToTheQuestion