是否有一种方法可以通过编程确定是否允许在macOS的安全和隐私设置中启动应用程序?
我正在尝试以静默方式启动一个从Cocoa应用程序中从web下载的.app,但是如果用户不允许来自Mac应用程序商店之外的应用程序,我的应用程序将无法启动,并出现一个对话框,建议用户更改其设置。我想知道应用程序是否能成功启动,如果不能,请自己打开安全和隐私设置,以便用户更改它们。
基本上,我在寻找AppIsAllowedToLaunch函数:
if (AppIsAllowedToLaunch(appURL)) {
} else {
}
我尝试的是:
-
-
[NSWorkspace.sharedWorkpace launchApplicationAtURL:options:configuration:error]
返回的实例
NSRunningApplication
. 这个对象不仅不允许我检查应用程序是否已成功启动,而且还要求我
尝试
-
开源开放(2)的替代方案大多已经过时,不能反映安全设置的变化,允许用户阻止非Mac应用商店应用程序的启动。遗憾的是,最初的open(2)不是开源的。
-
spctl -a /path/to/app.app
如果根据安全和隐私设置不允许启动应用程序,将正确返回3。但如果应用程序需要root权限才能运行(而我正在启动的应用程序需要),它也会返回3,因此我不能使用此方法。
LaunchServices
或
Security
)或系统数据库(类似于
/var/db/SystemPolicyConfiguration/KextPolicy
)为了检查应用程序是否可以成功启动,必须对其进行查询。