AGB  ·  Datenschutz  ·  Impressum  







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

Windows Version ermitteln

Ein Thema von Willie1 · begonnen am 23. Mai 2024 · letzter Beitrag vom 31. Mai 2024
Antwort Antwort
Seite 1 von 2  1 2      
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
165 Beiträge
 
Delphi 12 Athens
 
#1

AW: Windows Version ermitteln

  Alt 26. Mai 2024, 18:47
Hallo Wille,
hol dir die Info's doch direct aus der Registry:
Angehängte Grafiken
Dateityp: png Ergebnis.png (71,6 KB, 34x aufgerufen)
Debuggers don’t remove bugs, they only show them in slow-motion.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.908 Beiträge
 
Delphi 12 Athens
 
#2

AW: Windows Version ermitteln

  Alt 26. Mai 2024, 19:47
Hallo Wille,
hol dir die Info's doch direct aus der Registry:
Es ging ja darum, dass Windows 11 auch als Windows 11 erkannt wird. An der Stelle steht auch unter Windows 11 aber "Windows 10 Pro".
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#3

AW: Windows Version ermitteln

  Alt 26. Mai 2024, 21:52
Wie wir im Manifest sehen, ist ein Windows 11 ja auch ein 10 ... hat jedenfalls die selbe GUID
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.908 Beiträge
 
Delphi 12 Athens
 
#4

AW: Windows Version ermitteln

  Alt 26. Mai 2024, 22:46
Wie wir im Manifest sehen, ist ein Windows 11 ja auch ein 10 ... hat jedenfalls die selbe GUID
Windows 10 ist ja auch die letzte Windowsversion.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#5

AW: Windows Version ermitteln

  Alt 26. Mai 2024, 23:50
macOS ist auch nur der neue Name ... intern ist es doch auch nur ein OS X, also soooo verkehrt kann es nicht sein
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
691 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Windows Version ermitteln

  Alt 27. Mai 2024, 17:58
Hallo Wille,
hol dir die Info's doch direct aus der Registry:
Sieh dir meinen Screenshot an, Methode 3 benutzt die Registry, es steht Windows 10 da! Ich will nur die installierte Windows Version ermitteln.

Mit WMI klappt das offensichtlich auch bei Windows 11. Bei https://www.der-windows-papst.de/wp-...-einsetzen.pdf steht, dass man auch mit WMI die Build Nummer ermitteln kann. Ich habe WMI nicht gelernt, kann einer von euch das verstehen?
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#7

AW: Windows Version ermitteln

  Alt 27. Mai 2024, 18:42
Hallo,

das geht auch.
Delphi-Quellcode:
procedure GetWin32_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 Win32_OperatingSystem', 'WQL', wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
   begin
    memo1.Lines.add(Format('BootDevice %s',[String(FWbemObject.BootDevice)]));
    Memo1.Lines.add(Format('BuildNumber %s',[String(FWbemObject.BuildNumber)]));// String
    Memo1.Lines.Add(Format('Caption %s',[String(FWbemObject.Caption)]));// String
    FWbemObject:=Unassigned;
   end;
end;


begin
 try
  memo1.Lines.Clear;
  CoInitialize(nil);
   try
    GetWin32_OperatingSystemInfo;
   finally
    CoUninitialize;
   end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 end;
 end;
komplette Beschreibung hier -
https://learn.microsoft.com/de-de/wi...peratingsystem

habe ich mit dem glreichen Programm erstellt siehe #2. Der Code Schnipsel muss wieder angepasst werden.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Windows Version ermitteln

  Alt 27. Mai 2024, 18:49
So mache ich es, es liest Major, Minor, Build und Revisionsnummber von Windows aus.
Kompatibel mit Turbo Delphi 2006, FreePascal, RADStudio etc...
Es erscheint nicht "Das ist Windows 11" sondern was auch immer Windows selbst für sich hinterlegt hat als numerischer Wert.
Delphi-Quellcode:
program winverex;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;

type
  TWindowsVersion = packed record
    Major,
    Minor,
    Build,
    Revision: DWORD;
  end;

function GetWindowsVersion: TWindowsVersion;
type
  TVSFixedFileInfo = record
    dwSignature,
    dwStrucVersion,
    dwFileVersionMS,
    dwFileVersionLS,
    dwProductVersionMS,
    dwProductVersionLS,
    dwFileFlagsMask,
    dwFileFlags,
    dwFileOS,
    dwFileType,
    dwFileSubtype,
    dwFileDateMS,
    dwFileDateLS: DWORD;
  end;
  PVSFixedFileInfo = ^TVSFixedFileInfo;
  TRtlGetNtVersionNumbers = procedure(out MajorVersion, MinorVersion, BuildNumber: DWORD); stdcall;
var
  RtlGetNtVersionNumbers: TRtlGetNtVersionNumbers;
  hLib: HINST;
  dwHandle: DWORD;
  pBuffer: Pointer;
  pVersionInfo: PVSFIXEDFILEINFO;
  dwLen: DWORD;
  WindowsDir: array[0..Pred(MAX_PATH)] of AnsiChar;
  WideWindowsDir: WideString;
  GotRtlVer: Boolean;
begin
  dwHandle := 0;
  pVersionInfo := nil;
  GotRtlVer := False;
  GetWindowsDirectory(WindowsDir, MAX_PATH);
  StrCat(WindowsDir, '\System32\Ntdll.dll');
  SetString(WideWindowsDir, PAnsiChar(@WindowsDir[0]), Length(WindowsDir));
  hLib := LoadLibraryW(PWideChar(WideWindowsDir));
  if hLib <> 0 then
    begin
      RtlGetNtVersionNumbers := TRtlGetNtVersionNumbers(GetProcAddress(hLib, 'RtlGetNtVersionNumbers'));
      if Assigned(RtlGetNtVersionNumbers) then
        begin
          RtlGetNtVersionNumbers(Result.Major, Result.Minor, Result.Build);
          GotRtlVer := True;
        end;
      FreeLibrary(hLib);
    end;
  Result.Revision := 0;
  dwLen := GetFileVersionInfoSizeW(PWideChar(WideWindowsDir), dwHandle);
  if dwLen > 0 then
    begin
      pBuffer := AllocMem(dwLen);
      try
        if GetFileVersionInfoW(PWideChar(WideWindowsDir), dwHandle, dwLen, pBuffer) then
          begin
            if VerQueryValueW(pBuffer, '\', Pointer(pVersionInfo), dwLen) then
              begin
                if not GotRtlVer then
                  begin
                    Result.Major := HiWord(pVersionInfo^.dwFileVersionMS);
                    Result.Minor := LoWord(pVersionInfo^.dwFileVersionMS);
                  end;
                Result.Build := HiWord(pVersionInfo^.dwFileVersionLS);
                Result.Revision := LoWord(pVersionInfo^.dwFileVersionLS);
              end;
          end;
      finally
        FreeMem(pBuffer);
      end;
    end;
end;

var
  WindowsVersion: TWindowsVersion;
begin
  WindowsVersion := GetWindowsVersion;
  WriteLn(Format('Windows version: %d.%d.%d.%d', [WindowsVersion.Major, WindowsVersion.Minor, WindowsVersion.Build, WindowsVersion.Revision]));
  WriteLn('Done');
  ReadLn;
end.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#9

AW: Windows Version ermitteln

  Alt 27. Mai 2024, 19:14
PS: Nicht im GetIt nach WMI suchen!
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#10

AW: Windows Version ermitteln

  Alt 27. Mai 2024, 19:37
evtl. hier -
https://github.com/NeftaliDelphi/GLi...readme-ov-file

Gruß
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 03:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz