SCDynamicStoreSetValue returns false



我尝试更新mac的代理设置。SCDynamicStoreSetValue:返回false,表示更新不成功。这是我使用的代码。正确的方法是什么?

let ds: SCDynamicStoreRef = SCDynamicStoreCreate(nil, "setProxy" as CFString, nil, nil)!
        let isUpdated = SCDynamicStoreSetValue(ds, "HTTPProxy" as CFStringRef, "111.111.111.1")
        if isUpdated{
            print("updated")
        }else{
            print("not updated")
        }

问题是为什么SCDynamicStoreSetValue返回false以及如何规避它。

SCDynamicStoreSetValue失败后,调用SCError()获取错误代码:

let errorCode = SCError()

或者以字符串形式获取错误,其中包含:

let errorString = String.fromCString(SCErrorString(SCError()))

在任何一种情况下,请查看系统配置框架的状态和错误代码。这应该为您提供SCDynamicStoreSetValue返回false的原因。

(如果你的应用程序是沙盒,可能的原因是kSCStatusAccessError或"权限被拒绝"。沙盒应用程序无法设置这些值。)

我知道这是一个老话题,但SCDynamicStoreSetValue的第三个参数应该是CFPropertyListRef(在我们的例子中是CFString,而不是字符串),就像在文档中一样

在我的案例中,这导致了函数调用失败。

相关内容

  • 没有找到相关文章

最新更新