How to capture the Screen in secure desktop? Got some weird fact on different devices

438 Views Asked by At

I'm going to implement a remote desktop service like TeamViewer.

What I have already investigated:

  • The session 0 isolation from Vista.

  • secure desktop in windows.

What I have already tested:

  • A startup process which is launched as a Windows Service.

  • The startup process can get the process Token of the Winlogon.exe process and CreateProcessAsUser is called with the duplicated token to create the real remote desktop process.

  • Tried different capture methods: webRTC, which use the duplicated desktop API(DXGI); D3d, which use the GetFrontBufferData.

  • Tried to switch desktop before take the screenshot. For example, I call the OpenInputDesktop and setThreadDesktop before GetFrontBufferData is called.

What problem I've got:

The same binary and the launch policy got different result on different device. On my thinkpad(i7-10510U+UHD Graphics) and my desktop(AMD 3600x+Nvdia 2060S), the screen capture is expected, I can get both logon screen and the UAC screen for a long time (I tested for one night, at least longer than 7 hours). However, on other devices, the result is quite different, some of them can capture the logon screen or UAC screen for a moment(from 2 minutes to several hours), but finally, will got a black screen. The only way to recover is to kill the screen capture process and restart it.

Complement: My thinkpad is Windows10 professional version(19044.2728) and My desktop is Windows10 family version(sorry for lost the version number). The other devices are Windows10 professional version or Windows11 professional version.

I really cannot understand what can lead such difference. The hardware? Or the System version? Or the authority policy?

Looking for any possible reasons.

If the code is necessary , I'll paste it, but my code is not very readable :(

I've talked about my try above. What I am expecting is that the screen capture ability can work well on every device.

0

There are 0 best solutions below