gpt4 book ai didi

macos - 沙盒中不允许使用 IOKit?

转载 作者:行者123 更新时间:2023-12-01 18:17:59 24 4
gpt4 key购买 nike

我是 IOKit 的新手,并且注意到我认为是沙箱导致它失败。

这是我正在尝试的测试(在 Pascal 中),它在沙箱外运行良好,但当我启用它时,IOServiceOpen 每次都会返回错误 kIOReturnNotPermission。

对于某些服务,IOKit 在沙箱中不安全吗?我试图获取一些风扇速度/CPU 温度,我看到 AppStore(沙盒)中有一些应用程序这样做,所以我相信这是可能的。我唯一可以确认的是,似乎有一个 XPC 服务与该应用程序捆绑在一起作为助手,所以这也许是让 IOKit 工作的线索?我基本上尝试了所有权利,但似乎都没有帮助。

感谢您的任何想法。

procedure TestIOKit;
var
err: kern_return_t;
masterPort: mach_port_t;
iterator: io_iterator_t;
device: io_object_t;
matchingDictionary: CFMutableDictionaryRef;
conn: io_connect_t;
begin
IOMasterPort(0, masterPort);
matchingDictionary := IOServiceMatching('AppleSMC');
err := IOServiceGetMatchingServices(masterPort, matchingDictionary, iterator);
if err <> kIOReturnSuccess then
writeln('IOServiceGetMatchingServices: ', err);

device := IOIteratorNext(iterator);
IOObjectRelease(iterator);
if device = 0 then
writeln('no smc found');

err := IOServiceOpen(device, mach_task_self_, 0, conn);
if err <> kIOReturnSuccess then
writeln('IOServiceOpen: ', err);
end;

最佳答案

我在尝试读取 SMC key 以便从 OSX Yosemite“Today 扩展”内部获取传感器温度和风扇速度时发现了同样的问题。该扩展需要沙盒化,而且每次尝试读取温度和风扇传感器时,我都会收到 kIOReturnNotPermission 错误。

我让它工作的唯一方法是创建一个 XPC 服务来管理所有 SMC 内容,并将其配置为启动代理。这样,沙盒应用程序(“today”扩展)就会向 XPC 服务请求所有相关数据,而不是直接干扰 IOKit。

到目前为止,它似乎工作正常。

关于macos - 沙盒中不允许使用 IOKit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com