1

我尝试更新我的 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 以及如何规避它。

4

2 回答 2

2

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

let errorCode = SCError()

或者将错误作为字符串获取:

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

无论哪种情况,请查看系统配置框架的状态和错误代码。这应该为您提供SCDynamicStoreSetValue返回错误的原因。

(如果您的应用是沙盒化的,可能的原因是kSCStatusAccessError,或“权限被拒绝”。沙盒化应用无法设置这些值。)

于 2016-08-31T17:22:09.503 回答
1

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

在我的情况下,这导致函数调用失败。

于 2020-04-14T12:46:27.677 回答