Comment lancer un process utilisateur depuis un process SYSTEM ?
5 réponses
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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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() ?
"Erwan" <Erwan@nospam.org> wrote in message
news:4896b40a$0$865$ba4acef3@news.orange.fr...
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 ?
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
> Tu as essayé CreateProcessAsUser() ?
C'est effectivement une bonne piste. Mais comment obtenir le token de l'utilisateur courant depuis une appli SYSTEM ?
> Tu as essayé CreateProcessAsUser() ?
C'est effectivement une bonne piste. Mais comment obtenir le token de
l'utilisateur courant depuis une appli SYSTEM ?
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
"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 ?
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news: 4897e411$0$289$7a628cd7@news.club-internet.fr...
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 ?
"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 ?
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.
Erwan wrote:
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news: 4897e411$0$289$7a628cd7@news.club-internet.fr...
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.
"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.