Utilizzando i comandi sudo in Cocoa e Objective-C?
-
22-09-2019 - |
Domanda
Qual è il modo corretto di eseguire qualcosa di simile $sudo touch folder_name
o $sudo rm
dall'interno di Objective-C / Cocoa? Sto cambiando e muoversi un paio di file e hanno bisogno di privilegi elevati. Ogni campione di codice sarebbe molto apprezzato. Grazie.
Soluzione
Un modo per farlo è AuthorizationExecuteWithPrivileges()
, ma questo è scoraggiato per il normale corso delle cose. Principalmente è per gli installatori, ho capito.
Qualcosa di simile:
AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);
E si aggiunge adeguata verifica della err
...
Vedere la documentazione Autorizzazione .
Altri suggerimenti
Ci sono diversi modi per farlo. Che uno si sceglie dipende da ciò che si vuole fare. Il modo più semplice ed unsafest è di semplice insieme alla s-bit su uno strumento di aiuto in più che si chiama dal codice e fa quello che ha bisogno di diritti di amministratore. Date un'occhiata alla BetterAuthorizationSample per il modo più fantasia e complicato di eseguire codice con privilegi.
Il Autorizzazione Servizi Programmazione Guida ti dà tutto ciò che serve.