Comment lancer un process utilisateur depuis un process SYSTEM ?

Le
Erwan
Encore une petite question, toujours avec Vista.
Sous Vista, Windows Installer lance mon programme d'installation avec des
privilèges élevés, le propriétaire est "SYSTEM", au lieu du nom de
l'administrateur Windows sous 2000/XP. Le problème est que ce programme
d'installation lance à son tour un programme client avec ShellExecute(), et
que le logiciel client a lui aussi comme propiétaire "SYSTEM". Or je
voudrais que l'application cliente soit lancée dans l'environnement de la
session Windows courante avec les droits correspondants, et non pas SYSTEM.
Une idée ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jerome
Le #16477131
"Erwan" news:4896b40a$0$865$
Encore une petite question, toujours avec Vista.
Sous Vista, Windows Installer lance mon programme d'installation avec des
privilèges élevés, le propriétaire est "SYSTEM", au lieu du nom de
l'administrateur Windows sous 2000/XP. Le problème est que ce programme
d'installation lance à son tour un programme client avec ShellExecute(),
et que le logiciel client a lui aussi comme propiétaire "SYSTEM". Or je
voudrais que l'application cliente soit lancée dans l'environnement de la
session Windows courante avec les droits correspondants, et non pas
SYSTEM.
Une idée ?



Tu as essayé CreateProcessAsUser() ?
Erwan
Le #16477341
> Tu as essayé CreateProcessAsUser() ?



C'est effectivement une bonne piste. Mais comment obtenir le token de
l'utilisateur courant depuis une appli SYSTEM ?
Christian ASTOR
Le #16478491
Erwan wrote:
Tu as essayé CreateProcessAsUser() ?




C'est effectivement une bonne piste. Mais comment obtenir le token de
l'utilisateur courant depuis une appli SYSTEM ?




Par ex, OpenProcessToken() sur le handle de l'Explorer
Erwan
Le #16481851
"Christian ASTOR" news: 4897e411$0$289$
Erwan wrote:
Tu as essayé CreateProcessAsUser() ?




C'est effectivement une bonne piste. Mais comment obtenir le token de
l'utilisateur courant depuis une appli SYSTEM ?




Par ex, OpenProcessToken() sur le handle de l'Explorer



Effectivement, j'arrive à récuperer le token d'explorer et
CreateProcessAsUser fonctionne comme attendu.
Un dernier point qui me taraude, je récupère le handle du process via
EnumProcess(), est-ce que je peux être sûr que si il y a plusieurs sessions
utilisateurs ouvertes, le handle sur explorer puis son token sera bien celui
de ma session en cours et pas d'une autre session active ?
Mickael
Le #16490821
Erwan wrote:
"Christian ASTOR" news: 4897e411$0$289$
Erwan wrote:
Tu as essayé CreateProcessAsUser() ?



C'est effectivement une bonne piste. Mais comment obtenir le token de
l'utilisateur courant depuis une appli SYSTEM ?



Par ex, OpenProcessToken() sur le handle de l'Explorer



Effectivement, j'arrive à récuperer le token d'explorer et
CreateProcessAsUser fonctionne comme attendu.
Un dernier point qui me taraude, je récupère le handle du process via
EnumProcess(), est-ce que je peux être sûr que si il y a plusieurs sessions
utilisateurs ouvertes, le handle sur explorer puis son token sera bien celui
de ma session en cours et pas d'une autre session active ?





Ca parait difficile de recuperer les processes d'une autre session avec
EnumProcess sans faire de logon vers l'autre session. Donc normalement,
pas de probleme.
Publicité
Poster une réponse
Anonyme