Подскажите как получить имя ос и ее версию в Windows Server 2008,7 не читая при этом реестр.Ведь функция GetVersionEx тут уже не прокатит.
ну вы народ вообще пздц. не можете даже заюзать примеры с MSDN Вот когдато для себя писал код, более полного и нормального врядли встретите Тому кто скажет что не работает - оторву руки, потому что руки растущие из жопы мало пригодны. Код на Си + WinAPI. На входе - адрес буфера куда закинется результат. 128 байт хватит вроде как. Определяет версию винды начиная с Win 2000 и до Win 7 (9x считаем вымершим мамонтом и по этому внимания на него не обращаем)/ Попутно показывает какой SP стоит, а также скольки битная ОС, и если серверная, то под какой тип сервера. Code: #define VER_SUITE_WH_SERVER 0x00008000 void INFO_GetWinVer(char* buf) { OSVERSIONINFOEXA osvi; SYSTEM_INFO si; GetSystemInfo(&si); buf[0] = 0x00; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA); if (GetVersionExA((LPOSVERSIONINFOA)&osvi)) { if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion > 4) { lstrcpyA(buf, "Microsoft "); if (osvi.dwMajorVersion == 6) { if (osvi.dwMinorVersion == 0) { if (osvi.wProductType == VER_NT_WORKSTATION) { lstrcatA(buf, "Windows Vista "); } else { lstrcatA(buf, "Windows Server 2008 "); } } else if (osvi.dwMinorVersion == 1) { if (osvi.wProductType == VER_NT_WORKSTATION) { lstrcatA(buf, "Windows 7 "); } else { lstrcatA(buf, "Windows Server 2008 R2 "); } } } else if (osvi.dwMajorVersion == 5) { if (osvi.dwMinorVersion == 2) { if (GetSystemMetrics(SM_SERVERR2)) { lstrcatA(buf, "Windows Server 2003 R2 "); } else if (osvi.wSuiteMask & VER_SUITE_STORAGE_SERVER) { lstrcatA(buf, "Windows Storage Server 2003"); } else if (osvi.wSuiteMask & VER_SUITE_WH_SERVER) { lstrcatA(buf, "Windows Home Server"); } else if (osvi.wProductType == VER_NT_WORKSTATION && si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) { lstrcatA(buf, "Windows XP Professional x64 Edition"); } else { lstrcatA(buf, "Windows Server 2003 "); } if (osvi.wProductType != VER_NT_WORKSTATION) { if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64) { if (osvi.wSuiteMask & VER_SUITE_DATACENTER) { lstrcatA(buf, "Datacenter Edition for Itanium-based Systems"); } else if (osvi.wSuiteMask & VER_SUITE_ENTERPRISE) { lstrcatA(buf, "Enterprise Edition for Itanium-based Systems"); } } else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { if (osvi.wSuiteMask & VER_SUITE_DATACENTER) { lstrcatA(buf, "Datacenter x64 Edition"); } else if(osvi.wSuiteMask & VER_SUITE_ENTERPRISE) { lstrcatA(buf, "Enterprise x64 Edition"); } else { lstrcatA(buf, "Standard x64 Edition"); } } else { if (osvi.wSuiteMask & VER_SUITE_COMPUTE_SERVER) { lstrcatA(buf, "Compute Cluster Edition"); } else { if (osvi.wSuiteMask & VER_SUITE_DATACENTER) { lstrcatA(buf, "Datacenter Edition"); } else if (osvi.wSuiteMask & VER_SUITE_ENTERPRISE) { lstrcatA(buf, "Enterprise Edition"); } else if (osvi.wSuiteMask & VER_SUITE_BLADE) { lstrcatA(buf, "Web Edition"); } else { lstrcatA(buf, "Standard Edition"); } } } } } else if (osvi.dwMinorVersion == 1) { lstrcatA(buf, "Windows XP "); if (osvi.wSuiteMask & VER_SUITE_PERSONAL) { lstrcatA(buf, "Home Edition"); } else { lstrcatA(buf, "Professional"); } } else if (osvi.dwMinorVersion == 0) { lstrcatA(buf, "Windows 2000 "); if (osvi.wProductType == VER_NT_WORKSTATION) { lstrcatA(buf, "Professional"); } else { if (osvi.wSuiteMask & VER_SUITE_DATACENTER) { lstrcatA(buf, "Datacenter Server"); } else if (osvi.wSuiteMask & VER_SUITE_ENTERPRISE) { lstrcatA(buf, "Advanced Server"); } else { lstrcatA(buf, "Server"); } } } } if (osvi.szCSDVersion[0] != 0x00) { lstrcatA(buf, " "); lstrcatA(buf, osvi.szCSDVersion); } if (osvi.dwMajorVersion >= 6) { if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { lstrcatA(buf, " 64-bit"); } else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL) { lstrcatA(buf, " 32-bit"); } } } } else { lstrcatA(buf, "Unknown"); } } Функция даёт примерно такие данные: Code: Microsoft Windows 2000 Professional Service Pack 4 Microsoft Windows 7 32-bit Microsoft Windows 7 Service Pack 1, v.721 32-bit Microsoft Windows 7 Service Pack 1, v.741 32-bit Microsoft Windows 7 Service Pack 3 32-bit Microsoft Windows Server 2003 Datacenter Edition Microsoft Windows Server 2003 Enterprise Edition Microsoft Windows Server 2003 Enterprise Edition Service Pack 1 Microsoft Windows Server 2003 Enterprise Edition Service Pack 2 Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2 Microsoft Windows Server 2003 R2 Standard Edition Service Pack 1 Microsoft Windows Server 2003 R2 Standard Edition Service Pack 2 Microsoft Windows Server 2003 Standard Edition Microsoft Windows Server 2003 Standard Edition Service Pack 1 Microsoft Windows Server 2003 Standard Edition Service Pack 2 Microsoft Windows Vista 32-bit Microsoft Windows Vista Service Pack 1 32-bit Microsoft Windows Vista Service Pack 2 32-bit Microsoft Windows XP Home Edition Dodatek Service Pack 2 Microsoft Windows XP Home Edition Service Pack 1 Microsoft Windows XP Home Edition Service Pack 2 Microsoft Windows XP Home Edition Service Pack 3 Microsoft Windows XP Professional Microsoft Windows XP Professional Service Pack 1 Microsoft Windows XP Professional Service Pack 2 Microsoft Windows XP Professional Service Pack 2, v.2096 Microsoft Windows XP Professional Service Pack 3 Microsoft Windows XP Professional Service Pack 3, v.3244 Microsoft Windows XP Professional Service Pack 3, v.3264 Microsoft Windows XP Professional Service Pack 3, v.5512 Microsoft Windows XP Professional Szervizcsomag 3