-currentHost
を指定すると、defaults
によって返される情報は、ユーザーが現在ログインしているホストへの設定操作に制限されます(これらのホスト設定は~/Library/Preferences/ByHost
にあります)。
通常、デフォルトデータベースの操作は、ユーザーがログインできるホストに適用されますが、特定の ホストにのみ適用されるように制限されている可能性があります。
ホストが指定されていない場合、ユーザーがログインできる任意のホストに設定操作が適用されます。
-currentHost
Restricts preferences operations to the host the user is currently logged in on.
-host hostname
Restricts preferences operations to hostname.
ので、情報を得るためにあなたがについて尋ねてきました:-currentHost
オプションを省略することにより
$ defaults read com.apple.screensaver
それは返す必要があります:
{
askForPassword = 1;
askForPasswordDelay = 0;
}
あなたが使用したい場合CFPrefs
:
#import <CoreFoundation/CoreFoundation.h>
#define EX_KEY "askForPasswordDelay"
#define EX_ID "com.apple.screensaver"
extern CFDictionaryRef _CFPreferencesCopyApplicationMap(CFStringRef userName, CFStringRef hostName);
int main(int argc, char *argv[])
{
@autoreleasepool
{
CFURLRef current_url;
CFStringRef path;
CFMutableStringRef plist_path;
CFPropertyListRef value;
CFDictionaryRef app_map = _CFPreferencesCopyApplicationMap(
kCFPreferencesCurrentUser,
kCFPreferencesAnyHost);
CFArrayRef urls = CFDictionaryGetValue(app_map, CFSTR(EX_ID));
current_url = CFArrayGetValueAtIndex(urls, 0);
path = CFURLCopyPath(current_url);
plist_path = CFStringCreateMutable(kCFAllocatorDefault, 0);
CFStringAppend(plist_path, path);
CFStringAppend(plist_path, CFSTR(EX_ID));
CFPropertyListRef prefs = CFPreferencesCopyValue(
CFSTR(EX_KEY),
CFSTR(EX_ID),
CFSTR("kCFPreferencesCurrentUser"),
CFSTR("kCFPreferencesAnyHost"));
printf("CFPreferencesCopyValue \"%s\" of %s via ApplicationMap at path:\n", EX_KEY, EX_ID);
CFShow(plist_path);
CFShow(prefs);
CFRelease(prefs);
CFRelease(plist_path);
CFRelease(path);
CFRelease(app_map);
}
}
出力:
CFPreferencesCopyValue "askForPasswordDelay" of com.apple.screensaver via ApplicationMap at path:
/Users/Username/Library/Preferences/com.apple.screensaver
<CFNumber 0x47 [0x7fffbf0a9d80]>{value = +0.0, type = kCFNumberFloat32Type}
↳OSX Man Pages : defaults
私はあなたの質問について少し困惑しています。スクリーンセーバーセーバーが始動すると、パスワードが必要かどうか、そして遅延はどうなるのかという値だけを探したいのですか? 'defaults read com.apple.screensaver' *を* '-currentHost'なしで使用すると、その情報が返されます。 –
ああ、私はこのことで混乱してしまった。とにかくこれを呼び出すと全く異なる結果が得られ、私はすべての答えを得るために両方の部分が必要です。だから、私はそれを受け入れることができるように適切な答えを書いていますか? – solgar