Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202/* * VER.C - ver internal command. * * * History: * * 06/30/98 (Rob Lake) * rewrote ver command to accept switches, now ver alone prints * copyright notice only. * * 27-Jul-1998 (John P Price <linux-guru@gcfl.net>) * added config.h include * * 30-Jul-1998 (John P Price <linux-guru@gcfl.net>) * added text about where to send bug reports and get updates. * * 20-Jan-1999 (Eric Kohl) * Unicode and redirection safe! * * 26-Feb-1999 (Eric Kohl) * New version info and some output changes. */
#include "precomp.h"#include <reactos/buildno.h>#include <reactos/version.h>
OSVERSIONINFO osvi;TCHAR szOSName[50] = _T("");
VOID InitOSVersion(VOID){ LONG lResult; HKEY hKey;
/* Get version information */ ZeroMemory(&osvi, sizeof(osvi)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi);
/* Build OS version string */
/* Open registry key */ lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"), 0, KEY_QUERY_VALUE, &hKey); if (lResult == ERROR_SUCCESS) { DWORD dwSize, dwType;
/* Retrieve the ProductName value */ dwSize = sizeof(szOSName); lResult = RegQueryValueEx(hKey, _T("ProductName"), NULL, &dwType, (LPBYTE)szOSName, &dwSize);
/* If we have failed or the data type is unsupported... */ if (lResult != ERROR_SUCCESS || dwType != REG_SZ) { /* ... reserve size for one NULL character only! */ dwSize = sizeof(TCHAR);
/* Set an error code (anything != ERROR_SUCCESS) */ lResult = ERROR_INVALID_PARAMETER; }
/* NULL-terminate the string */ szOSName[(dwSize / sizeof(TCHAR)) - 1] = _T('\0');
/* Close the key */ RegCloseKey(hKey); }
/* * If the registry key somehow doesn't exist or cannot be loaded, then * determine at least whether the version of Windows is either 9x or NT. */ if (lResult != ERROR_SUCCESS) { switch (osvi.dwPlatformId) { case VER_PLATFORM_WIN32_WINDOWS: { if (osvi.dwMajorVersion == 4) { if (osvi.dwMinorVersion == 0) _tcscpy(szOSName, _T("Windows 95")); else if (osvi.dwMinorVersion == 1) _tcscpy(szOSName, _T("Windows 98")); else if (osvi.dwMinorVersion == 9) _tcscpy(szOSName, _T("Windows ME")); else _tcscpy(szOSName, _T("Windows 9x")); } break; }
case VER_PLATFORM_WIN32_NT: { _tcscpy(szOSName, _T("Windows NT")); break; } } }}
/* Print the current OS version, suitable for VER command and PROMPT $V format */VOID PrintOSVersion(VOID){ ConOutResPrintf(STRING_VERSION_RUNVER, szOSName, osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber, osvi.szCSDVersion);}
#ifdef INCLUDE_CMD_VER
/* * display shell version info internal command. */INT cmd_ver (LPTSTR param){ INT i;
nErrorLevel = 0;
if (_tcsstr(param, _T("/?")) != NULL) { ConOutResPaging(TRUE,STRING_VERSION_HELP1); return 0; }
ConOutResPrintf(STRING_CMD_SHELLINFO, _T(KERNEL_VERSION_STR), _T(KERNEL_VERSION_BUILD_STR)); ConOutChar(_T('\n')); ConOutResPuts(STRING_VERSION_RUNNING_ON); PrintOSVersion();
/* Basic copyright notice */ if (param[0] != _T('\0')) { ConOutPuts(_T("\n\n")); ConOutPuts(_T("Copyright (C) 1994-1998 Tim Norman and others.\n")); ConOutResPrintf(STRING_CMD_COPYRIGHT, _T(COPYRIGHT_YEAR));
for (i = 0; param[i]; i++) { /* Skip spaces */ if (param[i] == _T(' ')) continue;
if (param[i] == _T('/')) { /* Is this a lone '/' ? */ if (param[i + 1] == 0) { error_invalid_switch(_T(' ')); return 1; } continue; }
if (_totupper(param[i]) == _T('W')) { /* Warranty notice */ ConOutResPuts(STRING_VERSION_HELP3); } else if (_totupper(param[i]) == _T('R')) { /* Redistribution notice */ ConOutResPuts(STRING_VERSION_HELP4); } else if (_totupper(param[i]) == _T('C')) { /* Developer listing */ ConOutResPuts(STRING_VERSION_HELP6); ConOutResPuts(STRING_FREEDOS_DEV); ConOutResPuts(STRING_VERSION_HELP7); ConOutResPuts(STRING_REACTOS_DEV); } else { error_invalid_switch(_totupper(param[i])); return 1; } }
/* Bug report notice */ ConOutResPuts(STRING_VERSION_HELP5); }
ConOutChar(_T('\n'));
return 0;}
#endif