16 votes

Comment lancer une application GUI dans la session graphique d'un autre utilisateur ?

Je suis en train d'essayer de trouver comment lancer une application GUI en tant qu'un autre utilisateur connecté de manière interactive, dans la session graphique de cet utilisateur.

Par exemple, disons que j'ai deux utilisateurs, foo et bar. Les deux sont connectés, mais l'utilisateur interactif actuel est foo. Je voudrais lancer Calculator.app en tant qu'utilisateur "bar", de sorte que lorsque je bascule rapidement vers l'utilisateur bar, je trouve la fenêtre de la calculatrice ouverte dans la session de bar.

Voici ce que j'ai essayé qui ne fonctionne pas:

sudo -u bar /Applications/Calculator.app/Contents/MacOS/Calculator

Cela lance Calculator.app en tant que bar, mais la fenêtre s'ouvre dans la session graphique de foo.

sudo -u bar osascript -e "tell application \"Calculator\" to activate"

Même effet.

sudo -u bar open "/Applications/Calculator.app"

Le lance en tant que foo, pas bar.

launchctl asuser [uid de bar] [une des commandes ci-dessus]

Même effet.

Y a-t-il un moyen d'accomplir ceci? Je suis prêt à envisager toutes sortes de solutions possibles, y compris le scripting bash, AppleScript, l'écriture d'un programme Core Foundation ou Cocoa, etc. Dans ma situation, tout programme ou script pourrait s'exécuter en tant qu'utilisateur, y compris root.

Remarque : Je suis conscient qu'il est possible d'utiliser des Apple Events à distance, mais je ne peux pas l'utiliser car dans la situation où j'essaie de le faire, je n'ai aucune garantie que les "Apple Events à distance" seront activés dans les préférences de partage.

Toute aide serait grandement appréciée !

1 votes

Avez-vous essayé la commande open, en utilisant SSH ?

0 votes

Étrangement, l'icône de la barre de menu de l'application apparaît dans la session de foo, mais la fenêtre de l'application apparaît dans celle de bar. Donc cela ne semble pas fonctionner correctement, mais bonne suggestion. Malheureusement, il n'y a aucune garantie que la connexion sécurisée soit activée dans la situation où j'ai besoin de cela, qui est pour un installateur.

0 votes

Je pense qu'un élément de ce puzzle pourrait impliquer l'argument de ligne de commande -psn, que le système d'exploitation ajoute dans certaines situations. J'ai déjà rencontré cela par le passé en travaillant sur le portage de certains codes vers OS X. Voir cette question et la documentation Apple à laquelle elle fait référence.

-1voto

PandB Software Points 1

Simple

sudo su name_of_user

puis exécutez les commandes normalement.

0 votes

Les commandes seraient exécutées par bar, mais s'exécuteraient toujours dans la session graphique de foo.

0 votes

Désolé, oui je suis confus au sujet de la question, cela ne s'exécute pas sur la session graphique de foo.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X