Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Abfrage der Windowsversion nach Update (https://www.delphipraxis.net/210677-abfrage-der-windowsversion-nach-update.html)

MatthiasFehr 26. Mai 2022 09:40

Betriebssystem: Win 7,Win 8,Win 8.1,Win 10,Win 11

Abfrage der Windowsversion nach Update
 
Ich frage bisher in "HKEY_LOCAL_MACHINE" und
"SOFTWARE\Microsoft\Windows NT\CurrentVersion"
die Windowsversion ab. Das hat viele Jahre funktioniert.

Jetzt ist mir aufgefallen, dass bei einem Computer,
der von WIN10 auf WIN11 umgerüstet wurde, weiter die
alte Windowsversion über den o.g. Eintrag bereitgestellt wird.

Frage:
Gibt es eine alternative Methode in der Registrierung die aktuelle Windowsversion abzufragen?

Vorab vielen Dank!

venice2 26. Mai 2022 10:03

AW: Abfrage der Windowsversion nach Update
 
Das könnte eventuell eine Antwort sein.
Versuche es mal mit oder über WMI

MEissing 26. Mai 2022 10:47

AW: Abfrage der Windowsversion nach Update
 
TOSVersion von 11.1 liefert auch zuverlässig Windows 11 und Windows Server 2022 zurück
https://docwiki.embarcadero.com/RADS...L_Improvements

venice2 26. Mai 2022 10:47

AW: Abfrage der Windowsversion nach Update
 
Zitat:

Zitat von venice2 (Beitrag 1506381)
Das könnte eventuell eine Antwort sein.
Versuche es mal mit oder über WMI

Powershell:
Get-WmiObject -Class Win32_OperatingSystem | Format-List -Property Caption

gibt bei mir
Microsoft Windows 10 Enterprise aus.

Und unter 11? Würde mich mal Interessieren.

TurboMagic 26. Mai 2022 10:48

AW: Abfrage der Windowsversion nach Update
 
Warum nutzt du nicht System.SysUtils.TOSVersion?

https://docwiki.embarcadero.com/Libr...ils.TOSVersion

mmw 26. Mai 2022 14:07

AW: Abfrage der Windowsversion nach Update
 
Hallo,

zu #4

Delphi-Quellcode:
procedure GetCIM_OperatingSystemInfo;
 const
    WbemUser = '';
    WbemPassword = '';
    WbemComputer = 'localhost';
    wbemFlagForwardOnly = $00000020;
  var
    FSWbemLocator, FWMIService, FWbemObjectSet, FWbemObject: OLEVariant;
    oEnum: IEnumvariant;
    iValue: LongWord;
  begin
    FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
    FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
    FWbemObjectSet := FWMIService.ExecQuery('SELECT * FROM CIM_OperatingSystem', 'WQL', wbemFlagForwardOnly);
    oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumvariant;

    while oEnum.Next(1, FWbemObject, iValue) = 0 do

    begin
      showmessage(Format('Caption   %s', [string(FWbemObject.Caption)]));
      showmessage(Format('Version   %s', [string(FWbemObject.Version)]));
      FWbemObject := Unassigned;
    end;
  end;
liefert bei Windows 11:

Caption: Windows 11 Pro
Version: 10.0.22000

https://theroadtodelphi.com/


Gruß

venice2 26. Mai 2022 14:20

AW: Abfrage der Windowsversion nach Update
 
Zitat:

Zitat von mmw (Beitrag 1506387)
Hallo,

zu #4

Delphi-Quellcode:
procedure GetCIM_OperatingSystemInfo;
 const
    WbemUser = '';
    WbemPassword = '';
    WbemComputer = 'localhost';
    wbemFlagForwardOnly = $00000020;
  var
    FSWbemLocator, FWMIService, FWbemObjectSet, FWbemObject: OLEVariant;
    oEnum: IEnumvariant;
    iValue: LongWord;
  begin
    FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
    FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
    FWbemObjectSet := FWMIService.ExecQuery('SELECT * FROM CIM_OperatingSystem', 'WQL', wbemFlagForwardOnly);
    oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumvariant;

    while oEnum.Next(1, FWbemObject, iValue) = 0 do

    begin
      showmessage(Format('Caption   %s', [string(FWbemObject.Caption)]));
      showmessage(Format('Version   %s', [string(FWbemObject.Version)]));
      FWbemObject := Unassigned;
    end;
  end;
liefert bei Windows 11:

Caption: Windows 11 Pro
Version: 10.0.22000

https://theroadtodelphi.com/


Gruß

Danke. Dann wäre WMI also eine alternative. Davon bin ich ausgegangen.

MatthiasFehr 26. Mai 2022 15:57

AW: Abfrage der Windowsversion nach Update
 
Vielen Dank an Alle für die schönen Anregungen!

Ich verwende jetzt diese Varianten:

//Kurze Version
Result := System.SysUtils.TOSVersion.Name;

//Lange Version
Result := System.SysUtils.TOSVersion.ToString;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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