Изменить постоянное хранилище SCPreferences: Неверный аргумент - PullRequest
0 голосов
/ 19 апреля 2019

В настоящее время пытается изменить /Library/Preferences/com.apple.Bluetooth.plist для программного удаления устройств Bluetooth и запускается ошибка.

Прежде всего, когда вызывается SCPreferencesSetValue, конфигурация системы говорит

Ошибка домена = com.apple.SystemConfiguration Code = 0 "Успех!"UserInfo = {NSDescription = Success!}

Однако, когда я пытаюсь SCPreferencesCommitChanges, среда сообщает мне

Ошибка домена = com.apple.SystemConfiguration Code =1002 «Неверный аргумент» UserInfo = {NSDescription = Неверный аргумент}

Я не понимаю, как установка значения успешна, но не удается зафиксировать значение с помощью обычного объекта предпочтений ... Любая помощь приветствуется,Спасибо!


var authItem = AuthorizationItem(name: kAuthorizationRuleIsAdmin, valueLength: 0, value: nil, flags: 0)
var authRights = AuthorizationRights(count: 1, items: &authItem)
let flags : AuthorizationFlags = [.interactionAllowed, .extendRights, .preAuthorize, .extendRights]
let osStatus = AuthorizationCopyRights(self.authRef!, &authRights, nil, flags, nil)

let preferences = SCPreferencesCreateWithAuthorization(kCFAllocatorDefault, "defaults" as CFString, "/Library/Preferences/com.apple.Bluetooth.plist" as CFString, authRef)        

if !(SCPreferencesSetValue(preferences!, "PairedDevices" as CFString, paired as CFPropertyList)) {
    return false
}

print("Set Value: \(SCCopyLastError())")

let ok = SCPreferencesCommitChanges(preferences!)
if !ok {
    print("Commit Changes: \(SCCopyLastError())")
}
...