【发布时间】:2021-09-24 07:55:15
【问题描述】:
考虑以下命令:
sudo scutil
> list
我得到“模式”或可用子键的列表:
subKey [0] = Plugin:...
subKey [1] = Setup:....
....
在 Objective-C 中以编程方式,我可以访问一个特定的键:
SCDynamicStoreRef ds = SCDynamicStoreCreate(nullptr, CFSTR("GetWorkgroup"), nullptr, nullptr);
NSLog(@"Config: %@", SCDynamicStoreCopyValue(ds, CFSTR("State:/Network/Global/IPv4")));
但是,我正在努力获取所有可用模式的列表。
以下程序不起作用:
SCDynamicStoreRef ds = SCDynamicStoreCreate(nullptr, CFSTR("GetWorkgroup"), nullptr, nullptr);
const auto list = SCDynamicStoreCopyKeyList(ds, CFSTR("State:/Network/Service/"));
const size_t keysNum = CFArrayGetCount(list);
std::cout << keysNum << std::endl;
for (size_t i = 0; i< keysNum; ++i)
{
auto property = static_cast<CFDictionaryRef>(SCDynamicStoreCopyValue(ds, static_cast<CFStringRef>(CFArrayGetValueAtIndex(list, i))));
NSLog(@"Key: %@", property);
}
我尝试了很多代码都没有成功。在互联网上搜索 SCDynamicStore list subKey SCDynamicStore iterate patterns 或类似的结果很少。
此外,developer.apple.com 上的文档像往常一样是无用的:没有示例,文档依赖于您已经了解的所有内容,没有#include/#import 指示等等。
问题
如何在SCDynamicStore 中列出所有可用的模式?
【问题讨论】:
-
有办法解决这个问题吗?
标签: swift objective-c macos scdynamicstore