Vraag : Is er een manier om „(te maken)“ het werk ShellExecuteEx van een toepassing van de Dienst van Vensters?

Wij hebben „ShellExecuteEx ()“ gebruikt om een ander proces (niet-console, zichtbare GUI) van onze toepassing te lanceren.   Nu hebben wij een behoefte om de toepassing in de dienst van Vensters in werking te stellen, en „ShellExecuteEx () werkt niet (waarschijnlijk wegens het „shell“ deel).  Is er een manier om „(te maken)“ het werk ShellExecuteEx, of is er een andere manier om een niet-consoleproces van binnen de dienst te lanceren?  Wij werken in C++.

Antwoord : Is er een manier om „(te maken)“ het werk ShellExecuteEx van een toepassing van de Dienst van Vensters?

meer @rgautier: Uw raad is verouderd en niet meer gesteund door lidstaten.
Beginnend van het Uitzicht van Vensters, zijn de Interactieve Diensten slechts om verenigbaarheidsreden en zouden niet voor de nieuwe diensten moeten worden toegelaten.
In Uitzicht en nieuwer, verblijven de diensten en de het programma geopende gebruikers altijd in verschillende eindzitting en zo slechts is IPC mogelijk (zodat zijn geen handvatten, vensterberichten en GUIs mogelijk). Het uitzicht zal en nieuwer een smerig waarschuwingsbericht tonen als u probeert om een dialoog in de dienst te tonen.

In plaats daarvan moet u een nieuw proces in de doelzitting (begin bij 1) tot stand brengen, waar u uw toepassing wilt in werking stellen. Gebruik CreateProcessAsUser (CPAU) maar NIET CreateProcess.  Win het gebruikersteken met WTSQueryUserToken terug en gebruik het dan in CPAU.
Andere oplossingen  
 
programming4us programming4us