typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
typedef void (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD);
String SystemInfo(void)
{
OSVERSIONINFOEX info = {0};
bool bOsVersionInfoEx;
SYSTEM_INFO si;
PGNSI pGNSI;
PGPI pGPI;
DWORD dwType;
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *)&info);
if(!bOsVersionInfoEx)
{
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if(!GetVersionEx((OSVERSIONINFO *) &info)) return "Nieznany system";
}
pGNSI = (PGNSI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),
"GetNativeSystemInfo");
if(NULL != pGNSI) pGNSI(&si);
else GetSystemInfo(&si);
String sysInfo = "";
if(info.dwPlatformId == VER_PLATFORM_WIN32_NT) // wykrywanie systemu
{
switch(info.dwMajorVersion + info.dwMinorVersion)
{
case 7://if(info.dwMajorVersion == 5 && info.dwMinorVersion == 2)
{
if(info.dwMajorVersion == 6 && info.dwMinorVersion == 1)
{
sysInfo = "Microsoft Windows 7 ";
}
else
{
if(GetSystemMetrics(SM_SERVERR2))
sysInfo = "Microsoft Windows Server 2003 \"R2\" ";
else
{
if(info.wProductType == VER_NT_WORKSTATION &&
si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
{
sysInfo = "Microsoft Windows XP Professional x64 Edition ";
}
else sysInfo = "Microsoft Windows Server 2003 ";
}
}
break;
}
case 6://if(info.dwMajorVersion == 5 && info.dwMinorVersion == 1)
{
if(info.dwMajorVersion == 5)
{
sysInfo = "Microsoft Windows XP ";
}
else sysInfo = "Microsoft Windows Vista ";
break;
}
case 5://if(infodwMajorVersion == 5 && infodwMinorVersion == 0 )
sysInfo = "Microsoft Windows 2000 ";
break;
default://if(infodwMajorVersion <= 4 )
sysInfo = "Microsoft Windows NT ";
break;
}
if( bOsVersionInfoEx)
{
if(info.wProductType == VER_NT_WORKSTATION)
{
if(info.dwMajorVersion == 4) sysInfo += "Workstation 4.0 ";
else
{
if(info.wSuiteMask & VER_SUITE_PERSONAL) sysInfo += "Home Edition ";
else
{
if(info.wSuiteMask & VER_SUITE_ENTERPRISE) sysInfo += "Enterprise ";
else
{
if(info.dwMajorVersion == 5 && info.dwMinorVersion == 1)
sysInfo += "Professional ";
}
}
}
}
else
if(info.wProductType == VER_NT_SERVER)
{
if(info.dwMajorVersion == 5 && info.dwMinorVersion == 2)
{
if(info.wSuiteMask & VER_SUITE_DATACENTER) sysInfo += "Datacenter Edition " ;
else if(info.wSuiteMask & VER_SUITE_ENTERPRISE) sysInfo += "Enterprise Edition " ;
else if(info.wSuiteMask == VER_SUITE_BLADE ) sysInfo += "Web Edition ";
else sysInfo += "Standard Edition ";
}
else
if(info.dwMajorVersion == 5 && info.dwMinorVersion == 0)
{
if(info.wSuiteMask & VER_SUITE_DATACENTER) sysInfo += "Datacenter Server ";
else if(info.wSuiteMask & VER_SUITE_ENTERPRISE) sysInfo += "Advanced Server ";
else sysInfo += "Server ";
}
else // Windows NT 4.0
{
if(info.wSuiteMask & VER_SUITE_ENTERPRISE)
sysInfo += "Server 4.0, Enterprise Edition ";
else sysInfo += "Server 4.0 ";
}
}
}
} // koniec wyjrywania systemu
if(info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) // sprawdzanie Win no NT
{
switch(info.dwMajorVersion == 4 && info.dwMinorVersion)
{
case 4://if(info.dwMajorVersion == 4 && info.dwMinorVersion == 0)
sysInfo = "Microsoft Windows 95 ";
if(info.szCSDVersion[1] == 'C' || info.szCSDVersion[1] == 'B')
sysInfo += "OSR2 ";
break;
case 14://if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
sysInfo = "Microsoft Windows 98 ";
if(info.szCSDVersion[1]== 'A' || info.szCSDVersion[1] == 'B')
sysInfo += "SE ";
break;
case 94://(osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
sysInfo = "Microsoft Windows Millennium Edition ";
break;
}
} // koniec sprawdzania Win no NT
if(info.dwPlatformId == VER_PLATFORM_WIN32_NT && info.dwMajorVersion > 4)
{
pGPI = (PGPI) GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),
"GetProductInfo");
if(pGPI != NULL) pGPI(info.dwMajorVersion, info.dwMinorVersion, 0, 0, &dwType);
switch( dwType )
{
case PRODUCT_ULTIMATE:
sysInfo += "Ultimate ";
break;
case PRODUCT_PROFESSIONAL:
sysInfo += "Professional ";
break;
case PRODUCT_HOME_PREMIUM:
sysInfo += "Home Premium Edition ";
break;
case PRODUCT_HOME_BASIC:
sysInfo += "Home Basic Edition ";
break;
case PRODUCT_BUSINESS:
sysInfo += "Business Edition ";
break;
case PRODUCT_STARTER:
sysInfo += "Starter Edition ";
break;
}
}
sysInfo += "(Build " + (String)info.dwBuildNumber + ") ";
switch(info.wServicePackMajor)
{
case 1: sysInfo += "Dodatek Service Pack 1"; break;
case 2: sysInfo += "Dodatek Service Pack 2"; break;
case 3: sysInfo += "Dodatek Service Pack 3"; break;
}
return sysInfo;
}
//------------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
Label1->Caption = SystemInfo();
}