Je suis lassé de la intégré open
commande Mac OS X, la plupart du temps, car il gère des programmes avec votre ID utilisateur réel au lieu de l'ID de l'utilisateur effectif; il en résulte le fait sudo open Foo
ouvre Foo avec son application associée à votre compte au lieu du compte root
, et cela me contrarie. J'ai donc décidé de faire une sorte de remplacement.Comment ouvrir un document en utilisant une application lancée via NSTask?
Jusqu'ici, j'ai réussi: je peux ouvrir n'importe quel programme sous la mode open -a
ou open -b
, et le soutien éventuellement en attente. J'utilise NSTask
à cet effet.
Cependant, je voudrais être en mesure d'ouvrir des documents aussi. Pour autant que je peux voir, vous devez utiliser NSWorkspace
pour cela, mais en utilisant NSWorkspace
pour lancer des programmes en eux des résultats en cours de lancement avec les informations d'identification de votre compte au lieu des informations d'identification de votre programme de ligne de commande. Ce qui est précisément ce que l'outil par défaut open
fait, et précisément ce que je ne veux pas.
Alors, comment puis-je avoir une demande de programme qu'un autre programme ouvre un document sans utiliser NSWorkspace
? De l'objet NSTask
, je peux avoir l'ID de processus, mais c'est à peu près tout.
Ce que vous décrivez constituerait un risque extrême de sécurité. L'exécution d'une application graphique en tant que root n'est pas une bonne idée du tout. Pourquoi veux-tu faire cela? Il y a probablement un meilleur moyen. –
@Rob Keniger: Mon but est d'avoir un 'programme open' comme qui exécute des programmes sous' 'root' si je sudo open' eux, au lieu d'avoir à faire' sudo/full/application/chemin/Contents/MacOS/programme ». Je connais les risques de l'exécution de programmes comme «root», et je veux le faire pour moi-même. Il n'y a pas de redistribution planifiée ni d'environnement de production en fonction de cela. Par exemple, parfois je veux juste des informations du Moniteur d'activité qui ne peuvent être rassemblées que si elles sont exécutées en tant que root (comme les fichiers ouverts et les ports de démons). Ce n'est pas comme si je voulais lancer le Finder ou Safari en tant que root. – zneak