2016-03-15 187 views
-1

在我的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++實現,您必須自己研究您打算用於應用程序的每個主機操作系統的可用信息類型。 –

回答

0

這很好由POSIX標準化(我相信包括OSX)。要獲得OS元數據,您應該使用uname系統調用。我不知道iOS。

+1

不是。唯一ID是以太網卡的MAC地址,需要低級別的OSX特定呼叫。其他的東西需要調用'sysctlbyname()'。 – trojanfoe

+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