Question : Y a-t-il une manière de faire le travail de « ShellExecuteEx () » à partir d'une application de service de Windows ?

Nous avions employé « ShellExecuteEx () » pour lancer un autre processus (non-console, GUI évident) de notre application.   Maintenant nous avons un besoin de courir l'application dans un service de Windows, et « ShellExecuteEx () ne fonctionne pas (probablement en raison « pièce de coquille de la »).  Y a-t-il une manière de faire le travail de « ShellExecuteEx () », ou y a-t-il une autre manière de lancer un processus de non-console d'un service ?  Nous travaillons dans C++. class= de

Réponse : Y a-t-il une manière de faire le travail de « ShellExecuteEx () » à partir d'une application de service de Windows ?

@rgautier : Votre conseil est désuet et plus non soutenu par la milliseconde
À partir de Windows Vista, les services interactifs sont seulement pour la raison de compatibilité et ne devraient pas être permis pour de nouveaux services.
Dans Vista et plus nouveau, les services et les utilisateurs ouverts une session résident toujours en session de travail différente et seulement l'IPC est ainsi possible (ainsi aucuns poignées, messages de fenêtre et GUIs être possible). Vista et plus nouveau afficheront un message d'avertissement méchant si vous essayez de montrer un dialogue dans un service.

Au lieu de cela vous devez créer un nouveau processus en session de cible (débuts à 1), où vous voulez courir votre application. Employer CreateProcessAsUser (CPAU) mais PAS CreateProcess.  Rechercher la marque d'utilisateur avec WTSQueryUserToken et puis l'employer dans CPAU.
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us