Windows 서비스에서 프로세스를 실행하고 거기에서 스크린 샷을 얻어야합니다.Windows 서비스에서의 프로세스 스크린 샷
우리는 BitBlt 및 PrintWindow Win32 호출을 시도했지만 둘 다 빈 (검정색) 비트 맵을 제공합니다.
일반적인 사용자 프로세스에서 코드를 실행하면 정상적으로 작동합니다.
심지어 이것이 가능한 것입니까? 아니면 시도 할 다른 방법이있을 수 있습니까?
상황이 우리가 시도 : 로컬 시스템으로
- Windows 서비스가 로컬 시스템으로 실행, 프로세스를 실행 -> 스크린 샷은 관리자 권한으로 실행
- Windows 서비스 실패, 관리자로 프로세스를 실행 -> 스크린 샷이 실패합니다.
- 사용자 XYZ로 실행되는 Windows 응용 프로그램은 XYZ -> screenshot이 BitBlt 또는 PrintWindow와 함께 작동하는 프로세스를 실행합니다. 윈도우가 다른 창 뒤에있는 경우 우리는 또한에서 PrintWindow 우리의 경우에 더 잘 작동 것으로 나타났습니다
로컬 시스템에서 "서비스와 데스크톱 상호 작용 허용"체크 시도
다른 요구 사항의 경우 상위 프로세스와 하위 프로세스가 모두 동일한 사용자이어야합니다. 우리는 한 프로세스에서 다른 프로세스로 가장 (impersonation)을 사용할 수 없습니다.
서비스가 데스크톱과 상호 작용하도록 허용 했습니까? –
아주 좋은 생각 이었지만 작동하지 않았습니다. 관리자 사용자로 실행했을 때도 마찬가지였습니다. 사용자는 관리 콘솔에서 '서비스가 데스크톱과 상호 작용할 수 있도록 허용'을 선택할 수 없습니다. 비활성화되어 있습니다. – jonathanpeppers
검색하는 사람은 [서버 데스크탑 세션 캡처 화면]을 참조하십시오. (http://stackoverflow.com/questions/5200341/capture-screen-on-server-desktop-session/12851218) – Theraot