Retrouver la version de windows

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 006 fois - Téléchargée 33 fois

Contenu du snippet

Comment retrouver la version de windows ?

Source / Exemple :


function TFRef.GetWindowsVersion: String;
var
    VersionInfo: TOSVersionInfo;
    WindowsVersion: String;
begin
    // charger info
    VersionInfo.dwOSVersionInfoSize:=SizeOf(VersionInfo);
    GetVersionEx(VersionInfo);
    // en fonction de la version
    case VersionInfo.dwPlatformId of
        // win 3.1
        VER_PLATFORM_WIN32S: WindowsVersion:='Windows 3.1';

        // win 95 / 98 / me
        VER_PLATFORM_WIN32_WINDOWS:
            case VersionInfo.dwMinorVersion of
                 // win 95
                 0: begin
                       if VersionInfo.szCSDVersion[1]='B' then
                          WindowsVersion:='Windows 95 OSR 2'
                       else WindowsVersion:='Windows 95 OSR 1';
                    end;
                 // win 98
                 10: begin
                        if VersionInfo.szCSDVersion[1]='A' then
                           WindowsVersion:='Windows 98 OSR 2'
                        else WindowsVersion:='Windows 98 OSR 1';
                     end;
                 // win millenium
                 90: begin
                        if VersionInfo.dwBuildNumber=73010104 then
                           WindowsVersion:='Windows Millenium';
                     end;
            end;

        // win nt
        VER_PLATFORM_WIN32_NT :
            case VersionInfo.dwMajorVersion of
                // win nt 3.5
                3: WindowsVersion:='Windows NT 3.5';
                // win nt4
                4: WindowsVersion:='Windows NT 4';
                // win 2000 et xp
                5: case VersionInfo.dwMinorVersion of
                        // win 2000
                        0: WindowsVersion:='Windows 2000';
                        // win xp
                        1: WindowsVersion:='Windows XP';
                   end;
            end;
    end;
    // resultat
    Result:=WindowsVersion;
end;

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Bonjour,
Pour récuperer le nom du service pack installé, tu tapes SysUtils.Win32CSDVersion (et voila !)

Cordialement, Bacterius !

PS : Il me renvoie "Service Pack 2" alors je suppose que ...
Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Non membre
Dernière intervention
9 juillet 2020
1
Les exemples du SDK ne sont pas mal non plus !.
C'est reposant,pas difficile à taper et plutôt bien écrit(note 10/10 ,"humour").
ToutEnMasm


#include <windows.h>
#include <stdio.h>

#define BUFSIZE 80

int main()
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;

// Try calling GetVersionEx using the OSVERSIONINFOEX structure.
// If that fails, try using the OSVERSIONINFO structure.

ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
{
osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
return FALSE;
}

switch (osvi.dwPlatformId)
{
// Test for the Windows NT product family.
case VER_PLATFORM_WIN32_NT:

// Test for the specific product.
if ( osvi.dwMajorVersion 5 && osvi.dwMinorVersion 2 )
printf ("Microsoft Windows Server 2003, ");

if ( osvi.dwMajorVersion 5 && osvi.dwMinorVersion 1 )
printf ("Microsoft Windows XP ");

if ( osvi.dwMajorVersion 5 && osvi.dwMinorVersion 0 )
printf ("Microsoft Windows 2000 ");

if ( osvi.dwMajorVersion <= 4 )
printf("Microsoft Windows NT ");

// Test for specific product on Windows NT 4.0 SP6 and later.
if( bOsVersionInfoEx )
{
// Test for the workstation type.
if ( osvi.wProductType == VER_NT_WORKSTATION )
{
if( osvi.dwMajorVersion == 4 )
printf ( "Workstation 4.0 " );
else if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
printf ( "Home Edition " );
else printf ( "Professional " );
}

// Test for the server type.
else if ( osvi.wProductType == VER_NT_SERVER ||
osvi.wProductType == VER_NT_DOMAIN_CONTROLLER )
{
if(osvi.dwMajorVersion==5 && osvi.dwMinorVersion==2)
{
if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
printf ( "Datacenter Edition " );
else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
printf ( "Enterprise Edition " );
else if ( osvi.wSuiteMask == VER_SUITE_BLADE )
printf ( "Web Edition " );
else printf ( "Standard Edition " );
}
else if(osvi.dwMajorVersion==5 && osvi.dwMinorVersion==0)
{
if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
printf ( "Datacenter Server " );
else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
printf ( "Advanced Server " );
else printf ( "Server " );
}
else // Windows NT 4.0
{
if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
printf ("Server 4.0, Enterprise Edition " );
else printf ( "Server 4.0 " );
}
}
}
// Test for specific product on Windows NT 4.0 SP5 and earlier
else
{
HKEY hKey;
char szProductType[BUFSIZE];
DWORD dwBufLen=BUFSIZE;
LONG lRet;

lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
0, KEY_QUERY_VALUE, &hKey );
if( lRet != ERROR_SUCCESS )
return FALSE;

lRet = RegQueryValueEx( hKey, "ProductType", NULL, NULL,
(LPBYTE) szProductType, &dwBufLen);
if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) )
return FALSE;

RegCloseKey( hKey );

if ( lstrcmpi( "WINNT", szProductType) == 0 )
printf( "Workstation " );
if ( lstrcmpi( "LANMANNT", szProductType) == 0 )
printf( "Server " );
if ( lstrcmpi( "SERVERNT", szProductType) == 0 )
printf( "Advanced Server " );
printf( "%d.%d ", osvi.dwMajorVersion, osvi.dwMinorVersion );
}

// Display service pack (if any) and build number.

if( osvi.dwMajorVersion == 4 &&
lstrcmpi( osvi.szCSDVersion, "Service Pack 6" ) == 0 )
{
HKEY hKey;
LONG lRet;

// Test for SP6 versus SP6a.
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix\\Q246009",
0, KEY_QUERY_VALUE, &hKey );
if( lRet == ERROR_SUCCESS )
printf( "Service Pack 6a (Build %d)\n",
osvi.dwBuildNumber & 0xFFFF );
else // Windows NT 4.0 prior to SP6a
{
printf( "%s (Build %d)\n",
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
}

RegCloseKey( hKey );
}
else // not Windows NT 4.0
{
printf( "%s (Build %d)\n",
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
}

break;

// Test for the Windows Me/98/95.
case VER_PLATFORM_WIN32_WINDOWS:

if (osvi.dwMajorVersion 4 && osvi.dwMinorVersion 0)
{
printf ("Microsoft Windows 95 ");
if (osvi.szCSDVersion[1]=='C' || osvi.szCSDVersion[1]=='B')
printf("OSR2 " );
}

if (osvi.dwMajorVersion 4 && osvi.dwMinorVersion 10)
{
printf ("Microsoft Windows 98 ");
if ( osvi.szCSDVersion[1] == 'A' )
printf("SE " );
}

if (osvi.dwMajorVersion 4 && osvi.dwMinorVersion 90)
{
printf ("Microsoft Windows Millennium Edition\n");
}
break;

case VER_PLATFORM_WIN32s:

printf ("Microsoft Win32s\n");
break;
}
return TRUE;
}
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Nono40 nous donne un link très interessant.
C' est la meilleure source !
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
La version de DelphiProg ressemble beaucoup à celui de lae56. DelphiPorg utilise 2 types qui me semble très judicieux...

Cependant, ma source permet de :
- savoir le service pack.
- Ecrire le resultat comme on veut: Windows 95 OSR 1, Win98 OSR 1 ou meme simplement w95!!!
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
Ici :
http://delphi.developpez.com/faq/?page=systemedivers#versionwindows
( Dans le code contenu dans le zip, celui de la page est simplifié )
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.