Как определить версию ОС ?
От: Flar  
Дата: 02.03.03 19:23
Оценка:
Очень нужно определить версию ОС (что бы вставить полученный фрагмет в уже имеющуюся программу).
Помогите пожалуйста.
Re: Как определить версию ОС ?
От: Muchacho США  
Дата: 02.03.03 21:30
Оценка:
Здравствуйте, Flar, Вы писали:

F>Очень нужно определить версию ОС (что бы вставить полученный фрагмет в уже имеющуюся программу).

F>Помогите пожалуйста.
Если речь идет о Windows, то, например, можно использовать
BOOL GetVersionEx(
LPOSVERSIONINFO lpVersionInformation // pointer to version information structure
);
Re: Как определить версию ОС ?
От: kiborg Россия  
Дата: 07.03.03 07:10
Оценка: 3 (1)
(с) 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 >>
Re[2]: Как определить версию ОС ?
От: Constructor  
Дата: 12.03.03 11:01
Оценка:
Здравствуйте, kiborg, Вы писали:

K> []


Я тоже воспользуюсь Вашим примером

А что же будет с такой программой, когда выйдет новая версия Windows? Неужели нет системной функции, чтобы вернула строку с названием ОС? Я искал, но не нашел.
Re[3]: Как определить версию ОС ?
От: kiborg Россия  
Дата: 13.03.03 02:23
Оценка:
Здравствуйте, Constructor, Вы писали:

C>Здравствуйте, kiborg, Вы писали:


K>> []


C>Я тоже воспользуюсь Вашим примером


C>А что же будет с такой программой, когда выйдет новая версия Windows? Неужели нет системной функции, чтобы вернула строку с названием ОС? Я искал, но не нашел.


Конечно на 100% наверно не знает никто ,в том числе в M$, но по-моему нет. Можно, конечно, в реестре соответствующие строчки найдти, но это будет уже не системная функция.
А программа Ваша, если будет написана и даже доживет до следующей версии Windows , должна будет выйдти свежим релизом. И пользователи это любят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.