我正在制作一个OS X应用程序,我需要获取Mac模型,例如:
iMac11,3
MacBook3,1
等等。是否有任何课程或功能可以获得它?
答案 0 :(得分:22)
此信息可通过。 sysctl
:
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/sysctl.h>
size_t len = 0;
sysctlbyname("hw.model", NULL, &len, NULL, 0);
if (len) {
char *model = malloc(len*sizeof(char));
sysctlbyname("hw.model", model, &len, NULL, 0);
printf("%s\n", model);
free(model);
}
答案 1 :(得分:2)
该API的API将在IOKit中。在我的笔记本电脑上查看IORegistryExplorer应用程序,我看到IOService树根的第一个节点是IOPlatformExpertDevice,在“model”键下的条目等于“MacBookPro6,1”
答案 2 :(得分:0)
虽然不使用直接Cocoa API,但您可以使用NSTask来执行“system_profiler”命令行工具。如果您将工具执行为:“system_profiler SPHardwareDataType”,它将为您提供较小的输出,可以对其进行过滤以提取模型标识符。
<强>更新强>
我找到了一个以编程方式使用sysctl的示例:
int mib[2];
size_t len = 0;
char *rstring = NULL;
mib[0] = CTL_HW;
mib[1] = HW_MODEL;
sysctl( mib, 2, NULL, &len, NULL, 0 );
rstring = malloc( len );
sysctl( mib, 2, rstring, &len, NULL, 0 );
NSLog(@"%s", rstring );
free( rstring );
rstring = NULL;
来源from here。
答案 3 :(得分:0)
我不确定是否有通过Cocoa获取它的确切方法,但你可以使用NSTask并通过shell获取它。
sysctl hw.model