Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment lancer un process utilisateur depuis un process SYSTEM ?

5 réponses
Avatar
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 ?

5 réponses

Avatar
jerome
"Erwan" wrote in message
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() ?
Avatar
Erwan
> Tu as essayé CreateProcessAsUser() ?



C'est effectivement une bonne piste. Mais comment obtenir le token de
l'utilisateur courant depuis une appli SYSTEM ?
Avatar
Christian ASTOR
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
Avatar
Erwan
"Christian ASTOR" a écrit dans le message de
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 ?
Avatar
Mickael
Erwan wrote:
"Christian ASTOR" a écrit dans le message de
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.