Dalla mia applicazione mac, ho bisogno di scrivere un file in \ Libreria \ ColorSync \ Profili. Per questo, l'app ha bisogno del privilegio di amministratore per leggere la scrittura nella cartella. È possibile ottenere lo stesso con l'applicazione? Qualsiasi aiuto sarà apprezzato.Ottenere il privilegio di scrivere un file in Libreria ColorSync Profili in un'applicazione mac
sono in grado di pop-up nella finestra di autorizzazione con il seguente frammento di codice
NSSavePanel *tvarNSSavePanelObj = [NSSavePanel savePanel];
[tvarNSSavePanelObj setDirectoryURL:[NSURL URLWithString:@"/Library/ColorSync/Profiles"]];
__block NSString *filePathexn = nil;
[tvarNSSavePanelObj beginSheetModalForWindow:[NSApplication sharedApplication].mainWindow completionHandler:^(NSInteger tvarInt) {
if(tvarInt == NSModalResponseOK){
NSURL* tvarUrl = [tvarNSSavePanelObj URL];
NSLog(@"doSaveAs filename = %@",[tvarUrl path]);
NSString *filePath = [tvarUrl path];
filePathexn = [filePath stringByAppendingPathExtension:@"rtf"];
OSStatus status;
if(![[NSFileManager defaultManager]isWritableFileAtPath:filePath]){
NSLog(@"Not Writable at path");
AuthorizationRef authRef;
AuthorizationItem right = {kAuthorizationRightExecute, 0, NULL, 0};
AuthorizationRights rights = {1, &right};
status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagPreAuthorize, &authRef);
AuthorizationFlags authFlags = kAuthorizationFlagDefaults | kAuthorizationFlagExtendRights | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize;
status = AuthorizationCopyRights(authRef, &rights, kAuthorizationEmptyEnvironment, authFlags, NULL);
}
BOOL status1 = [[NSFileManager defaultManager]createFileAtPath:filePathexn contents:nil attributes:nil];
} else if(tvarInt == NSModalResponseCancel) {
return;
} else {
NSLog(@"doSave As tvarInt not equal 1 or zero = %3ld",(long)tvarInt);
return;
}
}];
ho bisogno di sapere come la scrittura di file potrebbe essere fatto. Il file fermo non viene scritto nel percorso. È necessario specificare il nome di uno strumento? Sarà possibile con SMJobless()? Si prega di avvisare una soluzione !!
Non si forniscono informazioni cruciali. –
@ElTomato Ho apportato alcune modifiche. Potresti commentare ora? – iGo
A chi è destinata l'applicazione? Se si intende distribuire la propria applicazione tramite Mac App Store, non sarà consentito all'utente di richiedere l'autenticazione amministrativa. –