我试图(以编程方式)检测在更改系统安全设置时出现的OSX管理员密码提示。理想情况下,该解决方案适用于C++或Objective-C。我查看了提供操作系统通知的各种NSDistributedNotificationCenters
,但它们似乎都不特定于密码提示。我尝试注册该操作系统可以提供的所有通知,但是一旦进入“系统偏好设置”窗口,这些通知似乎就会停止。
我也研究了SFAuthorizationPlugin
概念,但似乎更多是从冷启动登录系统。
我知道这是有可能的,因为我已经看到其他应用程序会检测到密码提示,并在出现时在屏幕上显示某些内容。
那么如何以编程方式检测OSX管理员密码提示?
最佳答案
您可以从工作空间中监听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
关于objective-c - 如何检测OSX管理员密码提示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38352149/