2016-07-13 16 views
5

Ich versuche (programmatisch) die Eingabeaufforderung des OSX-Administratorkennworts zu erkennen, die beim Ändern der System-Sicherheitseinstellungen angezeigt wird. Im Idealfall würden die Lösungen für C++ oder Objective-C funktionieren. Ich habe verschiedene NSDistributedNotificationCenters betrachtet, die OS-Benachrichtigungen bereitstellen, aber keine von ihnen scheint spezifisch für die Passwortabfrage zu sein. Ich habe versucht, mich für alle Benachrichtigungen zu registrieren, die das Betriebssystem bereitstellen kann, aber diese Benachrichtigungen scheinen zu stoppen, sobald ich in das Fenster Systemeinstellungen eingetreten bin.Wie erkennt man die OSX-Admin-Passwortabfrage?

Ich habe auch in das SFAuthorizationPlugin Konzept untersucht, aber es scheint wie das ist mehr für die Anmeldung in das System von einem Kaltstart.

Ich weiß, dass es möglich ist, wie ich andere Anwendungen gesehen habe die Passwortabfrage erkennen und etwas auf dem Bildschirm anzeigen, wann immer es erscheint.

Also, wie kann ich die OSX-Administrator-Passwort-Eingabeaufforderung programmgesteuert erkennen?

Antwort

3

Sie können im Arbeitsbereich auf SecurityAgent-Benachrichtigungen warten.

abonnieren Anwendung Aktivierungsbenachrichtigungen wie folgt:

@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

Perfect, das ist genau das, was ich gesucht habe! – JohnDvorak

Verwandte Themen