7
votes

Python Subprocess.Popen comme utilisateur différent sur Windows

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.


1 commentaires

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.


3 Réponses :


6
votes

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.


2 commentaires

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.



3
votes

Une autre option consiste à peupler non le processus souhaité, mais runas ... commande. Notez que le service sous doit être activé et en cours d'exécution.


0 commentaires

2
votes

J'ai fini par augmenter le sous-processus: xxx

Le code suivant lance cmd.exe comme utilisateur nom d'utilisateur : < Pré> xxx


1 commentaires

Ceci a été édité dans la question par le OP - déplacé vers une réponse CW.