从沙盒应用程序锁定 Macbook 屏幕

Posted

技术标签:

【中文标题】从沙盒应用程序锁定 Macbook 屏幕【英文标题】:Lock macbook screen from a sandboxed app 【发布时间】:2014-11-06 11:39:05 【问题描述】:

我正在构建一个我想在 mac 应用商店中分发的 mac 应用。我需要这个应用有锁屏功能。

我有两种不同的方法可以工作,问题是,一旦我为应用程序启用沙盒(这是 mac 应用商店所必需的),这些方法都不起作用。

您知道我需要申请哪项权利吗?或者您知道第三种适用于沙盒的方法吗?

谢谢

方法一,使用 CGSession (swift):

var arguments = ["-suspend"]
var task = NSTask()
task.arguments = arguments
task.launchPath = "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession"
task.launch()

方法 2,使用 IORequestIdle (swift):

var r = IORegistryEntryFromPath(kIOMasterPortDefault, "ioservice:/IOResources/IODisplayWrangler") 
if (r > 0) 
  IORegistryEntrySetCFProperty(r, "IORequestIdle", kCFBooleanTrue)
  IOObjectRelease(r)

【问题讨论】:

顺便说一句,我对 Objective-C 解决方案很满意 锁屏需要什么?隐私?数据保护?为什么要锁定整个 Mac 而不仅仅是您的应用程序?要锁定整个 Mac,请用户激活系统偏好设置 > 安全 > “睡眠或屏幕保护程序后需要密码...”并设置一个活动角以​​进入屏幕/屏幕保护程序的睡眠状态。我怀疑这可以通过编程方式完成,因为它涉及管理员权限。 因为目标是锁定mac。不是应用程序。目标是提供一个“锁定按钮”,而不是关于如何锁定 Mac 的教程(同时我们已经在做)它可以通过编程方式完成,因为我们已经在应用程序退出沙盒模式的情况下完成了它。问题是如何在沙盒模式下进行(分发应用程序) 仅供参考,如果您在其首选项中启用相应选项,钥匙串访问应用程序可以始终在菜单栏中放置“锁定屏幕”项。 是的,我知道,谢谢,这就是我们的教程现在所说的 【参考方案1】:

很抱歉,它无法完成。沙盒的目的是防止一个应用程序可以占用整个计算机。

您可以尝试通过沙盒指南中记录的渠道获得临时异常。

【讨论】:

以上是关于从沙盒应用程序锁定 Macbook 屏幕的主要内容,如果未能解决你的问题,请参考以下文章

从沙盒命令行应用程序获取当前工作目录

贝宝应用程序。从沙盒到直播

PayPal - 使用 REST API 从沙盒切换到真实账户

从沙盒可可应用程序向最前面的应用程序发送击键

如何将文件从沙盒应用程序正确复制到应用程序脚本文件夹?

Paypal:从沙盒上线