Quelle est la meilleure façon de lancer un sous-processus comme un utilisateur différent de Python sur Windows? De préférence xp et up, mais si cela ne fonctionne que sur Vista et 7, je peux vivre avec ça aussi. P>
3 Réponses :
Je ne suis pas sûr que vous pouvez le faire avec les bibliothèques python standard. Cependant, le paquet pywin32 a un Win32Process.createProcessasSuser fonction qui peut être ce dont vous avez besoin. P>
Je ne vois pas un moyen de capturer stdout / err. Toute aide avec ce serait bien.
Vous pouvez créer un processus Python en tant qu'utilisateur cible, que le processus Python exécute votre sous-processus et transmettez STDIN / OUT / OUT / ERR au processus de Python "Master", via une connexion à la prise ou quelque chose comme ça.
Une autre option consiste à peupler non le processus souhaité, mais runas ... code> commande. Notez que le service code> sous code> doit être activé et en cours d'exécution. P>
J'ai fini par augmenter le sous-processus: Le code suivant lance cmd.exe code> comme utilisateur
nom d'utilisateur code>: p> < Pré> xxx pré> p>
Ceci a été édité dans la question par le OP - déplacé vers une réponse CW.
J'ai déplacé la réponse postée par @ericpruit à une réponse CW. Si vous voulez le poster vous-même, republiez-vous la réponse vous-même, je me suis ici, et je supprimerai la réponse CW.