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 lokalnegoZauważ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.