检索系统和操作系统信息

问题描述:

在我的C/C++应用程序,我想表现出一定的系统和操作系统的信息一样,检索系统和操作系统信息

  • 唯一ID标识的机器。
  • 操作系统名称。
  • OS架构
  • 厂商
  • 型号

赢球,我检索通过WMI这些信息,

  1. 类:Win32_ComputerSystemProduct,重点:UUID
  2. 类:Win32_OperatingSystem, Key:Name
  3. Class:Win32_OperatingSystem,key:OSArchitect URE
  4. 类:的Win32_ComputerSystem,重点:制造
  5. 类:的Win32_ComputerSystem,重点:型号

在Mac(10.9.5),到目前为止,我只能够得到使用由于IOKit硬件UUID。

也尝试使用kOSBuildVersionKey获取os名称,但它不适用于我。

io_registry_entry_t ioRegistryRoot = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/"); 
CFStringRef verKeyCf = (CFStringRef) IORegistryEntryCreateCFProperty(ioRegistryRoot, CFSTR(kOSBuildVersionKey), kCFAllocatorDefault, 0); 
IOObjectRelease(ioRegistryRoot); 

如何获得其他详细信息?请建议!

谢谢, R.

+2

在构成C++标准的1400多个页面中,没有这种类型。正如您已经发现的,这完全取决于主机操作系统的单独C++实现,您必须自己研究您打算用于应用程序的每个主机操作系统的可用信息类型。 –

这很好由POSIX标准化(我相信包括OSX)。要获得OS元数据,您应该使用uname系统调用。我不知道iOS。

+1

不是。唯一ID是以太网卡的MAC地址,需要低级别的OSX特定呼叫。其他的东西需要调用'sysctlbyname()'。 – *foe

+0

UNAME给人的信息一样, 类型为sysname = “达尔文”, 节点名= “Rudreshs-MAC-mini.local”, 发布= “13.4.0”, 版本=“Darwin内核版本13.4.0:星期三12月17日19:05:52 PST 2014; root:xnu-2422.115.10〜1/RELEASE_X86_64“,machine =”x86_64“ 我需要信息”关于本机“中显示的内容 软件:OS X 10.9.5 – user1939578

+0

I需要一个提供像sw_vers命令一样的输出的函数。 – user1939578