Reputation: 1
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.
Upvotes: 0
Views: 654