c ++ - Sådan tilslutter du en Windows-service til konsol-sessionen

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har udviklet en ekstern desktop-applikation, der kører som en Windows-tjeneste, og jeg spekulerede på, hvordan jeg kunne forbinde applikationen til en bestemt session og tillade det at hente brugerens skrivebord som en bitmap, sæt markørpositionen, send museklik og tastatur input til konsol sessionen.

Bedste reference


Du skal bruge SetThreadDesktop() for at ændre trådens kontekst i din tjeneste til brugerens skrivebord. [6]



  • SetThreadDesktop() tager et håndtag til skrivebordet som dets første parameter; for at få det håndtere skal du bruge EnumDesktops().

  • EnumDesktops() tager et håndtag til vinduestationen som dets første parameter; for at få det håndtere skal du bruge EnumWindowStations()



For at forstå, hvad der foregår med vinduesstationer og stationære computere, så prøv at læse denne oversigt fra MSDN. [7] [8] [9]


Endelig være forsigtig med denne teknik. Højere privilegerede processer (dvs. tjenester), der interagerer med brugerens skrivebord, er grundlaget for splittelseangreb. [10]