Очень нужно определить версию ОС (что бы вставить полученный фрагмет в уже имеющуюся программу).
Помогите пожалуйста.
(с) Vladimir Gorkov
void get_win_os(char *result)
{
OSVERSIONINFO osv;
osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osv);
if(osv.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
char szNtProductType[32] = {"Workstation"};
typedef DWORD (WINAPI* PRtlGetNtProductType) (PDWORD pVersion);
PRtlGetNtProductType func = (PRtlGetNtProductType)::GetProcAddress(GetModuleHandle("ntdll.dll"),"RtlGetNtProductType");
if(func)
{
DWORD dwVersion = 0L;
func(&dwVersion);
if(dwVersion != 1)
strcpy(szNtProductType,"Server");
}
if(osv.dwMajorVersion >= 5)
{
if(osv.dwBuildNumber <= 2195)
lstrcpy(result, "Microsoft® Windows 2000 ");//WinVer=W2K;
else
lstrcpy(result, "Microsoft® Windows XP ");//WinVer=WinXP;
}
else
lstrcpy(result, "Microsoft® Windows NT 4.0 ");//WinVer=WNT4;
lstrcat(result, szNtProductType);
lstrcat(result, " (TM) ");
} // if(osv.dwPlatformId == VER_PLATFORM_WIN32_NT)
else
if(osv.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
if(osv.dwMinorVersion < 10)
lstrcpy(result, "Microsoft® Windows 95 (TM) ");//WinVer=W95;
else
if(osv.dwMinorVersion < 90)
{
if(osv.dwBuildNumber <= 2222)
lstrcpy(result, "Microsoft® Windows 98 (TM) ");//WinVer=W98;
else
lstrcpy(result, "Microsoft® Windows 98SE (TM) ");//WinVer=W98SE;
}
else
lstrcpy(result, "Microsoft® Windows ME (TM) ");//WinVer=WME;
}
// Добавить номер версии, сборки
TCHAR build[20];
wsprintf(build, " %lu.%lu.%lu ", osv.dwMajorVersion,
osv.dwMinorVersion,
(osv.dwPlatformId == VER_PLATFORM_WIN32_NT)?osv.dwBuildNumber:LOWORD(osv.dwBuildNumber));
lstrcat(result, build);
lstrcat(result, osv.szCSDVersion);
}
... << RSDN@Home 1.0 beta 6a >>
Здравствуйте, kiborg, Вы писали:
K> []
Я тоже воспользуюсь Вашим примером
А что же будет с такой программой, когда выйдет новая версия Windows? Неужели нет системной функции, чтобы вернула строку с названием ОС? Я искал, но не нашел.
Здравствуйте, Constructor, Вы писали:
C>Здравствуйте, kiborg, Вы писали:
K>> []
C>Я тоже воспользуюсь Вашим примером
C>А что же будет с такой программой, когда выйдет новая версия Windows? Неужели нет системной функции, чтобы вернула строку с названием ОС? Я искал, но не нашел.
Конечно на 100% наверно не знает никто

,в том числе в M$, но по-моему нет. Можно, конечно, в реестре соответствующие строчки найдти, но это будет уже не системная функция.
А программа Ваша, если будет написана и даже

доживет до следующей версии Windows

, должна будет выйдти свежим релизом. И пользователи это любят.