void QMacSettingsPrivate::clear() { QCFType<CFArrayRef> cfarray = CFPreferencesCopyKeyList(domains[0].applicationOrSuiteId, domains[0].userName, hostName); CFPreferencesSetMultiple(0, cfarray, domains[0].applicationOrSuiteId, domains[0].userName, hostName); }
QStringList QMacSettingsPrivate::children(const QString &prefix, ChildSpec spec) const { QMap<QString, QString> result; int startPos = prefix.size(); for (int i = 0; i < numDomains; ++i) { for (int j = 0; j < numHostNames; ++j) { QCFType<CFArrayRef> cfarray = CFPreferencesCopyKeyList(domains[i].applicationOrSuiteId, domains[i].userName, hostNames[j]); if (cfarray) { CFIndex size = CFArrayGetCount(cfarray); for (CFIndex k = 0; k < size; ++k) { QString currentKey = qtKey(static_cast<CFStringRef>(CFArrayGetValueAtIndex(cfarray, k))); if (currentKey.startsWith(prefix)) processChild(currentKey.mid(startPos), spec, result); } } } if (!fallbacks) break; } return result.keys(); }
CFArrayRef NDASPreferencesGetRAIDDeviceInformationList() { return CFPreferencesCopyKeyList ( NDAS_PREFERENCES_FILE_RAID_INFORMATION, kCFPreferencesAnyUser, kCFPreferencesCurrentHost ); }
CFArrayRef NDASPreferencesGetLogicalDeviceConfigurationList() { return CFPreferencesCopyKeyList ( NDAS_PREFERENCES_FILE_CONFIGURATION, kCFPreferencesAnyUser, kCFPreferencesCurrentHost ); }
CFArrayRef NDASPreferencesGetRegisteredSlotList() { // Read Last Value. CFPreferencesSynchronize( NDAS_PREFERENCES_FILE_REGISTER, kCFPreferencesAnyUser, kCFPreferencesCurrentHost ); return CFPreferencesCopyKeyList ( NDAS_PREFERENCES_FILE_REGISTER, kCFPreferencesAnyUser, kCFPreferencesCurrentHost ); }
extern "C" void CMIOInitPreferencesOnce() { // this code only executes once CACFArray keyArray( CFPreferencesCopyKeyList(CFSTR("com.apple.cmio"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost), true ); if ( keyArray.GetCFArray() ) sCMIOPrefsCache = CFPreferencesCopyMultiple( keyArray.GetCFArray(), CFSTR("com.apple.cmio"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost); #if !USE_DTRACE_LOGGING if ( sCMIOPrefsCache ) { CACFDictionary(sCMIOPrefsCache, false).GetBool(CFSTR("Debug"), sCMIODebug); } #endif }
void genOSXDomainPrefs(const CFStringRef& username, const CFStringRef& domain, bool current_host, QueryData& results) { const auto* user = (username != nullptr) ? &username : (isUserAdmin()) ? &kCFPreferencesAnyUser : &kCFPreferencesCurrentUser; const auto* host = (current_host) ? &kCFPreferencesCurrentHost : &kCFPreferencesAnyHost; auto keys = CFPreferencesCopyKeyList(domain, *user, *host); if (keys == nullptr) { return; } auto values = CFPreferencesCopyMultiple(keys, domain, *user, *host); if (values == nullptr) { CFRelease(keys); return; } std::string username_string; if (username != nullptr) { username_string = stringFromCFString(username); } // Iterate over each preference domain's preference name. for (CFIndex j = 0; j < CFArrayGetCount(keys); ++j) { Row r; r["username"] = username_string; r["host"] = (current_host) ? "current" : "any"; r["domain"] = stringFromCFString(domain); auto key = static_cast<CFStringRef>(CFArrayGetValueAtIndex(keys, j)); if (CFStringGetTypeID() != CFGetTypeID(key)) { continue; } // Interesting results/behavior from Microsoft products. r["key"] = stringFromCFString(key); if (r.at("key").find('>') != std::string::npos || r.at("key").find('<') != std::string::npos || r.at("key").size() == 0) { continue; } // Check if the preference key is managed by a profile. auto forced = CFPreferencesAppValueIsForced(key, domain); r["forced"] = (forced) ? '1' : '0'; CFTypeRef value = nullptr; if (forced) { value = static_cast<CFTypeRef>(CFPreferencesCopyAppValue(key, domain)); } else { // Check the key and key type (which may be any CF type). value = static_cast<CFTypeRef>(CFDictionaryGetValue(values, key)); } genOSXPrefValues(value, r, results, 0); if (forced) { CFRelease(value); } } CFRelease(values); CFRelease(keys); }