2016-07-13 2 views
5

Я пытаюсь (программно) обнаруживать приглашение пароля администратора OSX, которое появляется при изменении параметров безопасности системы. В идеале решения будут работать для C++ или Objective-C. Я просмотрел различные NSDistributedNotificationCenters, которые предоставляют уведомления ОС, но ни один из них, похоже, не является специфичным для подсказки пароля. Я пробовал зарегистрироваться для всех уведомлений, которые может предоставить ОС, но эти уведомления, кажется, останавливаются, как только я войду в окно «Системные настройки».Как обнаружить подсказку пароля администратора OSX?

Я также рассмотрел концепцию SFAuthorizationPlugin, но, похоже, это больше для входа в систему с холодного ботинка.

Я знаю, что это возможно, поскольку я видел, как другие приложения обнаруживают приглашение пароля и отображают что-то на экране всякий раз, когда он появляется.

Итак, как я могу программным образом определить приглашение пароля администратора OSX?

ответ

3

Вы можете прослушивать уведомления SecurityAgent из рабочей области.

Подписаться на уведомления активации приложения, как так:

@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

Отлично, это именно то, что я искал! – JohnDvorak