2010-04-28 60 views

回答

45

使用System.OperatingSystem對象,然後在主&次版本號進行篩選。

我已經在過去使用這些功能:

static bool IsWinXPOrHigher() 
{ 
    OperatingSystem OS = Environment.OSVersion; 
    return (OS.Platform == PlatformID.Win32NT) && ((OS.Version.Major > 5) || ((OS.Version.Major == 5) && (OS.Version.Minor >= 1))); 
} 

static bool IsWinVistaOrHigher() 
{ 
    OperatingSystem OS = Environment.OSVersion; 
    return (OS.Platform == PlatformID.Win32NT) && (OS.Version.Major >= 6); 
} 
+0

如果操作系統是64位,PlatformID仍然是Win32NT? – AngryHacker 2010-04-28 20:06:08

+2

@AngryHacker PlatformID.Win32 =「操作系統是Windows NT或更高版本」,所以是的。 – ParmesanCodice 2010-04-28 20:54:54

+1

我更改了IsWinXp的代碼來檢查它是否是Windows XP或更高版本。與Vista相同。 – AngryHacker 2010-04-28 21:42:02

9

檢查Major屬性大於或等於5,如果5則Minor至少爲1.(XP爲5.1,2003爲5.2,Vista/2008爲6.0)。

List of Windows Version Numbers on MSDN

+2

...和Windows 7是6.1 – Esko 2010-04-28 19:15:01

+3

請注意,WinXP 32位是版本5.1; WinXP 64位是版本5.2。 – 2010-04-28 19:18:54

+0

這就是爲什麼你應該尋找你需要的東西,而不是檢查版本號,以及爲什麼Win7是版本6.1而不是7.0。檢查版本號很容易出錯,並不總是告訴你你想知道什麼。 – Stewart 2010-04-28 19:57:55

5

你不應該檢查版本號。相反,你應該檢查你需要的功能。例如,如果它是一個特定的API,例如LoadLibrary和GetProcAddress,那麼您就不依賴於版本號。

+0

鑑於依賴是他需要版本的原因,這是一個非常好的主意。 – daramarak 2010-04-28 19:49:21

+0

如何檢查操作系統是否支持RegFree COM? – AngryHacker 2010-04-28 20:05:01

+0

嘗試從清單中加載組件。如果它不起作用,平臺不支持regfree COM – Stewart 2010-04-28 21:19:04

相關問題