2010-09-30 106 views
0

我正在開發一個Windows應用程序(它取決於DirectShow,所以沒有Linux等)。如何檢查當前的操作系統是否爲Windows 7?

現在,它將在XP和Windows 7(不支持Vista)中運行。

然而,有一段代碼,其行爲在XP或Windows 7完全不同,所以我需要知道我是哪個系統,做一個解決方法。由於我不支持Vista,並且即使我這樣做,我猜也不會有太大的區別 - 我不在乎Vista和7是否被識別爲相同的操作系統,儘管我寧願它們不是。

以防萬一,我在C++開發的,我不想維護兩個不同的可執行文件,我寧願一個語言無關的方式來做到這一點。

所以,我的問題:什麼是正確的方式(TM)在運行時檢查哪個Windows版本運行?

+0

您在跳過Vista時支持XP和7?我很樂意聽到推理說... – 2010-09-30 08:37:49

+0

@Greg:因爲Vista是我們非常想忘記的事情之一,很像Windows ME,Windows 1.0和MSDOS 4 :-) – paxdiablo 2010-09-30 08:38:50

+0

@paxdiablo - 我從來沒有真正理解人們與Vista的問題。我現在在我的筆記本電腦上使用它,因爲它似乎不值得重新安裝7的工作。確定現成的版本有幾個可用性抱怨,但運行SP2完全沒問題。 – 2010-09-30 08:44:17

回答

2

article由納文引用具有重要的話,這可能是有關您的方案,也:

識別當前操作系統通常不是確定某個特定的操作系統的功能是否是最好的方法當下。這是因爲操作系統可能在可再發行DLL中添加了新功能。不是使用GetVersionEx來確定操作系統平臺或版本號,而是測試該功能本身的存在。

使用IsOS函數可以檢查特定功能。

GetVersionEx可用於檢索的操作系統版本。但是,請注意,根據兼容模式是否生效,操作系統將有不同的標識。

+0

謝謝。我並不支持任何新功能,只是在應用一些醜陋的低級別黑客行爲(而其他一些行爲與正常情況下的行爲不同)時,一些DirectShow過濾器在XP和7中似乎表現不同。目前,瞭解操作系統版本似乎已經足夠了。 – raven 2010-10-01 09:46:05

2

請參閱這篇文章MSDN獲得OS版本編程。

+0

非常感謝。你能編輯你的答案以包含函數名稱,所以萬一鏈接失敗,任何發現這個頁面的人都可以搜索它們嗎? – raven 2010-09-30 09:03:57

相關問題