Добрый день! Странная встретилась вещь: для определения версии ОС пользуюсь всем известными GetVersionEx()/Get[Native]SystemInfo()/GetProductInfo(), что не вызывало ни у кого никаких вопросов, пока для системы Windows 2003 Datacenter SP2 GetVersionEx() не вернула в _OSVERSIONINFOEX.wSuiteMask число 0x192 (400 по-русски). Встал вопрос: что оно означает? Раскладываем на составляющие: + VER_SUITE_SINGLEUSERTS (0х100) - ОК + VER_SUITE_TERMINAL (0х10) - ОК + VER_SUITE_DATACENTER (0х80) - ОК + VER_SUITE_ENTERPRISE (0х02) - ??? Т.е. мы одновременно и Datacenter, и Enterprise? Как такое возможно и почему система об этом ничего не знает (нулевая чистая установка, с отключенным апдейтом)? Порылся в примерах определения и заметил, что при определении часто используют анализ этого значения с некоторым приоритетом, а именно (наиболее типичный код): Код (Text): if ( osvi.wSuiteMask & VER_SUITE_COMPUTE_SERVER ) StringCchCat(pszOS, BUFSIZE, TEXT( "Compute Cluster Edition" )); else if( osvi.wSuiteMask & VER_SUITE_DATACENTER ) StringCchCat(pszOS, BUFSIZE, TEXT( "Datacenter Edition" )); else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE ) StringCchCat(pszOS, BUFSIZE, TEXT( "Enterprise Edition" )); else if ( osvi.wSuiteMask & VER_SUITE_BLADE ) StringCchCat(pszOS, BUFSIZE, TEXT( "Web Edition" )); else StringCchCat(pszOS, BUFSIZE, TEXT( "Standard Edition" )); Т.е. сначала тестируемся на одно, затем на другое и т.д... Но откуда такое знание взялось? Где можно об этом прочесть и убедиться, что именно так нужно делать? Всем спасибо!
Windows Server Datacenter построен на базе Enterpse, просто увиличено количество памяти и еще что-то не помню уже...
Спасибо, но это только часть предлагаемой в примерах (в т.ч. МСДНовских) цепочки... Сомневаюсь что этот факт можно экстраполировать на две оставшиеся редакции. Как считаете?