En utilisant les commandes SUDO à Cocoa et Objective-C?
-
22-09-2019 - |
Question
Quelle est la bonne façon de lancer quelque chose comme $sudo touch folder_name
ou $sudo rm
à l'intérieur Objective-C / Cocoa? Je change et se déplacer quelques fichiers et ont besoin des privilèges élevés. Tout exemple de code serait grandement apprécié. Merci.
La solution
Une façon de le faire est AuthorizationExecuteWithPrivileges()
, mais est déconseillée pour le cours normal des choses. Principalement, il est pour les installateurs, je crois.
Quelque chose comme:
AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);
Et vous ajoutez un contrôle approprié de err
...
Autres conseils
Il y a plusieurs façons de le faire. Lequel vous choisissez dépend de ce que vous voulez faire. Le plus simple et unsafest est simple jeu le bits sur un outil d'aide supplémentaire que vous appelez à partir de votre code et fait ce besoin de droits d'administrateur. Jetez un oeil à la BetterAuthorizationSample pour la façon la plus compliquée de fantaisie et d'exécuter du code privilégié.
Le les services d'autorisation Guide de programmation vous donne tout ce dont vous avez besoin.