2011-05-23 78 views
2

哪一個是在以下幾個方面的窗戶讓操作系統名稱,操作系統版本更好 -如何在Windows中獲取os名稱,版本?

  1. 時間獲取信息
  2. 在所有的Windows操作系統像XP,VISTA
  3. 兼容性和更高的

系統的系統信息或wmic命令?我想避免在C中使用OSVersionInfoEx,因爲必須對營銷名稱檢測進行硬編碼,並且如果引入了新的窗口風格,將會增加維護工作。請分享您的意見。

回答

4

GetVersionEx - 對於獲取基本的操作系統版本號,你無法獲得比此更快的速度。但是你是對的,你將無法將更新版本的操作系統映射到正確的字符串。你有沒有考慮過這樣做:

OSVERSIONINFOEX version = {}; 
char szOS[MAX_OS_LENGTH]; 

version.dwOSVersionInfoSize = sizeof(version); 
GetVersionEx((OSVERSIONINFO*)&version); 

if (MyFunctionToMapVersionToString(&version, szOS) == false) 
{ 
    sprintf(szOS, "Microsoft Windows %d.%d", version.dwMajorVersion, version.dwMinorVersion); 
} 

WMI-多一點的代碼來寫。但是,您可能只是在應用程序啓動時(或需要時)執行此操作,並在再次需要信息時緩存結果。它不像操作系統的產品名稱會在應用程序查詢一次後發生變化。 :)至於向後兼容性,我確定它在較早的操作系統上工作正常......但是在將它交付給客戶之前,您將對其進行測試,對吧?

如果你想要一個未公開的方式,也有正是一個註冊表項,你希望它是什麼:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion ("ProductName") 
相關問題