2016-07-13 50 views
5

Sto tentando di rilevare (a livello di codice) la richiesta della password dell'amministratore OSX visualizzata quando si modificano le impostazioni di sicurezza del sistema. Idealmente le soluzioni funzionerebbero per C++ o Objective-C. Ho esaminato vari NSDistributedNotificationCenters che forniscono notifiche del sistema operativo, ma nessuno di essi sembra essere specifico per la richiesta della password. Ho provato a registrarmi per tutte le notifiche che il sistema operativo è in grado di fornire, ma queste notifiche sembrano interrompersi una volta che ho inserito la finestra delle Preferenze di Sistema.Come rilevare la richiesta della password dell'amministratore di OSX?

Ho anche esaminato il concetto SFAuthorizationPlugin, ma sembra che sia più per l'accesso al sistema da un avvio a freddo.

So che è possibile, come ho visto altre applicazioni rilevare il prompt della password e visualizzare qualcosa sullo schermo ogni volta che appare.

Quindi, come posso rilevare a livello di codice la richiesta della password dell'amministratore OSX?

risposta

3

È possibile ascoltare le notifiche di SecurityAgent dallo spazio di lavoro.

iscriversi alla notifica di attivazione applicazione in questo modo:

@interface notificationHandler: NSObject {} 
@end 

@implementation notificationHandler 
-(id)init 
{ 
    [[[NSWorkspace sharedWorkspace] notificationCenter] 
     addObserver:self 
     selector :@selector(handleNotification) 
     name  :NSWorkspaceDidActivateApplicationNotification 
     object  :nil]; 
} // init 

-(void)handleNotification:(NSNotification *) notification 
{ 
    NSDictionary info = [notification userInfo]; 
    NSString *appName = [[info objectForKey:NSWorkspaceApplicationKey] localizedName]; 
    if ([appName isEqualToString:@"SecurityAgent"]) { 
     // You have found the administrator password prompt! 
    } 
} // handleNotification 
@end 
+0

perfetta, questo è esattamente quello che stavo cercando! – JohnDvorak

Problemi correlati