AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OS Version Windows 10 ermitteln.

Ein Thema von Gerd01 · begonnen am 7. Aug 2015 · letzter Beitrag vom 18. Jun 2019
 
Gerd01

Registriert seit: 18. Mär 2005
Ort: NRW
117 Beiträge
 
Delphi XE2 Professional
 
#1

OS Version Windows 10 ermitteln.

  Alt 7. Aug 2015, 15:40
Bis Windows 8.1 habe ich das Operating System über Win32Platform und dann über die Win32MajorVersion und Win32MinorVersion ermittelt (Bitte keine Frage Warum man die Windows-Version benötigt). Mit Windows Version 10 geht das so nicht mehr.
Ich habe mir deshab folgende "Krücke" durch das Auslesen der Registry gebaut:

Code:
Type
  TWinOSType = ( win_UnknownPlatform,
                 win32_95, win32_98, win32_ME,
                 win32_NT, win32_2000, win32_XP,
                 win_Vista, win_Win7, win_Win8, win_Win10 );

function Windows10FromRegistry: Boolean;
var
  s: string;
begin
  Result := false;
  with TRegistry.Create(KEY_EXECUTE) do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion') then
    try
      if ValueExists('CurrentVersion')
        then s := Readstring('CurrentVersion');
      if s = '6.3' then
        if ValueExists('CurrentBuildNumber')
          then s := Readstring('CurrentBuildNumber');
      Result := StrToIntDef(s,0) >= 10240;
    except
    end;
    CloseKey;
  finally
    Free;
  end;
end;

function GetWinOSType: TWinOSType;
begin
  Result := win_UnknownPlatform;
 case Win32Platform of
    VER_PLATFORM_WIN32_WINDOWS:// 1=9x-Reihe
      If Win32MajorVersion=4 Then
      Begin
        Case Win32MinorVersion of
          0 : result := win32_95;
          10: result:= win32_98;
          90: result:= win32_ME;
        end;
      end;
    VER_PLATFORM_WIN32_NT: // 2=NT-Reihe
     Case Win32MajorVersion of
         3:IF Win32MinorVersion=51 then
              result:= win32_NT;//'Windows NT 3.51';
         4:If Win32MinorVersion=0 then
             result:= win32_NT; //'Windows NT 4';
         5:Case Win32MinorVersion of
              0: result:= win32_2000;
              1: result:= win32_xp; //'Windows XP';
              2: result:= win32_xp; //'Windows .NET Server';
           end;
         6:case Win32MinorVersion of
              0: result := win_Vista;
              1: Result := win_Win7;
//              2: Result := Result := win_Win8;
              2:Begin
                 Result := win_Win8;
                 if Windows10FromRegistry then
                   Result := win_Win10;
                End;
           end;
     End;
  end;
end;
Hat jemand eine Idee, wie man das eleganter "sicherer" darstellen kann? Für Eure Hilfe wäre ich dankbar.

Gruß Gerd
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz