Разве та же страница, на которую вы ссылаетесь, не дает ответа?
Windows Server 2008 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Просто сравните член wProductType
с VER_NT_WORKSTATION
редактировать
Не похоже, что есть способ получить это без P / Invoke. System.Environment.OSVersion
не раскрывает этот уровень детализации, и хотя в Microsoft.Win32
в mscorlib
есть пространство internal static class Win32Native
, насколько я могу судить по разборке, нет ничего, что использует, не говоря уже о разоблачениях 1016 *.
Я нашел (но не пытался) эту страницу на pinvoke.net .