Frage : Gibt es eine Weise, „ShellExecuteEx ()“ Arbeit von einer Windows-Service-Anwendung zu bilden?

Wir verwendet „ShellExecuteEx ()“, um einen anderen Prozess (Nichtkonsole, sichtbares GUI) von unserer Anwendung zu starten.   Jetzt haben wir eine Notwendigkeit, die Anwendung in einem Windows-Service laufen zu lassen, und „ShellExecuteEx () arbeitet nicht (vermutlich wegen des „Oberteil“ Teils).  Gibt es eine Weise, „ShellExecuteEx ()“ Arbeit zu bilden, oder gibt es eine andere Weise, einen Nichtkonsole Prozess von einem Service innen zu starten?  Wir arbeiten in C++.

Antwort : Gibt es eine Weise, „ShellExecuteEx ()“ Arbeit von einer Windows-Service-Anwendung zu bilden?

@rgautier: Ihr Rat ist überholt und nicht mehr durch Mitgliedstaat gestützt
Abfahrend von Windows Vista, sind wechselwirkende Dienstleistungen nur aus Kompatibilitätsgrund und sollten nicht für neue Dienstleistungen ermöglicht werden.
In Vista und neuer, liegen Dienstleistungen und angemeldete Benutzer immer in der unterschiedlichen Terminalsitzung und folglich ist nur IPC möglich (also keine Handgriffe, Fenstermitteilungen und GUIs möglich sein). Vista und neueres anzeigen eine böse Warnmeldung s, wenn Sie versuchen, einen Dialog in einem Service zu zeigen.

Stattdessen müssen Sie einen neuen Prozess im Ziellernabschnitt verursachen (beginnen mit 1), wo Sie Ihre Anwendung laufen lassen möchten. CreateProcessAsUser (CPAU) aber NICHT CreateProcess verwenden.  Das Benutzerzeichen mit WTSQueryUserToken zurückholen und es in CPAU dann benutzen.
Weitere Lösungen  
 
programming4us programming4us