如何以編程方式知道我的操作系統是Longhorn服務器還是Vista(客戶端)。區分Windows版本的最簡單方法是什麼?
看來主要版本和次要版本相同兩種:
http://msdn.microsoft.com/en-us/library/ms724833.aspx
那麼,有沒有更好的選擇嗎?
如何以編程方式知道我的操作系統是Longhorn服務器還是Vista(客戶端)。區分Windows版本的最簡單方法是什麼?
看來主要版本和次要版本相同兩種:
http://msdn.microsoft.com/en-us/library/ms724833.aspx
那麼,有沒有更好的選擇嗎?
不你鏈接在同一頁面給你答案?
Windows Server 2008 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
只需選中wProductType
成員對VER_NT_WORKSTATION
編輯
看起來不像有辦法讓這個沒有的P/Invoke。 System.Environment.OSVersion
沒有公開這個級別的細節,儘管在mscorlib
的Microsoft.Win32
名稱空間中有internal static class Win32Native
,但據反彙編我可以看出,沒有什麼東西可以使用,更不用說公開了,wProductType
。
我找到了(但沒有試過)this page on pinvoke.net。
對於服務器,
OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
工作站
OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
您可以使用WMI來查找Windows版本以及各種其他系統信息。
這裏是如何獲取版本字符串:
var osDetails = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<System.Management.ManagementObject>().First();
string version = osDetails.GetPropertyValue("Caption") as string;
這將返回一個字符串,上面寫着這樣的:「微軟Windows XP專業版」。
有更多的屬性從標題那裏除了可以用來檢索版本號,版本,結構等:
http://msdn.microsoft.com/en-us/library/aa394239(v=VS.85).aspx
它的文章中,你已經張貼? wProductType區分客戶端和服務器。 – 2010-03-03 10:11:24