Delphi-PRAXiS
Seite 3 von 8     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   OS Version Windows 10 ermitteln. (https://www.delphipraxis.net/186147-os-version-windows-10-ermitteln.html)

Gerd01 8. Aug 2015 10:36

AW: OS Version Windows 10 ermitteln.
 
Also den Aufwand, die API zu testen, ob die Funktion noch existiert oder noch gültig ist wird niemand durchführen. Im Übrigen gibt es ja unter Windows 10 zum Beispiel die Function GetVersionEx noch. Sie liefert aber falsche Ergebnisse.

mm1256 8. Aug 2015 10:42

AW: OS Version Windows 10 ermitteln.
 
@Gerd01 @Daniel ooops...jetzt, nach nochmaligem lesen...du hast wohl Sir Rufo gemeint und nicht mich. Bitte vielmals um Entschuldigung.

Kann es sein, dass meine mangelnde Konzentration an der Hitze liegt? Ich hab hier schon 34 Grad. :oops:

EDIT: Vielleicht nochmals zum eigentlichen Thema: Es ist zu erwarten, dass MS die Build-Nummern mit Win 10 jetzt in ziemlich kurzen Abständen hoch zählt. Ist das nicht ein weiterer guter Grund, zumindest die Registry-Einträge mit zu verwenden?

Daniel 8. Aug 2015 10:45

AW: OS Version Windows 10 ermitteln.
 
Man muss natürlich aufpassen, dass man sich in der ganzen Prüferei nicht verliert.
Aber: Ich kann mir schon vorstellen, vom Betriebssystem eine Dienstleistung in Anspruch nehmen zu wollen und prüfe dann, ob die dafür benötigten Funktionen zu Verfügung stehen - oder eben nicht. Der Fokus läge dann auf dem Vorhandensein einer Funktionalität und nicht auf der Versionsnummer des Betriebssystems. Es wäre irrelevant, ob es Windows 95, 10, 8 oder 42 mit Servicepack 4 wäre.
Das kann in einigen Fällen flexibler sein - ich denke da an Windows Vista, welches nachträglich noch mal einen Satz an Funktionen via ServicePack erhalten hat.

Bernhard Geyer 8. Aug 2015 11:34

AW: OS Version Windows 10 ermitteln.
 
Zitat:

Zitat von Gerd01 (Beitrag 1311501)
Im Übrigen gibt es ja unter Windows 10 zum Beispiel die Function GetVersionEx noch. Sie liefert aber falsche Ergebnisse.

Wie schon gesagt liefert GetVersionEx nicht die Falsche Info wenn man den passenden Manifesteintrag hat.
Was es mit diesen Eintrag auf sich hat wird hier erklärt: http://blogs.msdn.com/b/chuckw/archi...t-madness.aspx

Ohne Eintrag läuft deine App halt im Kompatiblitätsmodus. Das Verhalten ist schon seit Windows Vista so (Oder auch XP da ja dort das Manifest erstmal eingeführt wurde).

Bernhard Geyer 8. Aug 2015 11:37

AW: OS Version Windows 10 ermitteln.
 
Zitat:

Zitat von mm1256 (Beitrag 1311502)
Es ist zu erwarten, dass MS die Build-Nummern mit Win 10 jetzt in ziemlich kurzen Abständen hoch zählt. Ist das nicht ein weiterer guter Grund, zumindest die Registry-Einträge mit zu verwenden?

Die Buildnummern sind nochmal ein eigener Eintrag. Diese hat früher nicht gestört und wird auch in Zukunft nicht stören.
Aber evtl. braucht man diese in Zukunft mehr wen MS die Aussage "Windows 10 wird die letzte Windows(Major)Version werden" und "Neue Features gibts nur bei Installation aller Updates" das man dann das Vorhandensein (und die funktionsfähigkeit) von Features über die Buildnummer bestimmen muss.
Aber lassen wir uns beim ersten Feature-Update überraschen was MS sich ausgedacht hat. Evtl. steht ja schon in den MSDN-Untiefen schon etwas beschrieben wie man das dann SW-Technisch unterscheidet.

mm1256 8. Aug 2015 11:43

AW: OS Version Windows 10 ermitteln.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Daniel (Beitrag 1311503)
Man muss natürlich aufpassen, dass man sich in der ganzen Prüferei nicht verliert.

YUPP - es kommt eben wie schon gesagt auf den Zweck an. Da ich ja heute zufällig an diesem Thema arbeite, anbei mal mein aktueller Stand. Nicht mehr als eine kleine kompakte Unit, so ähnlich stelle ich mir das vor, und vielleicht ist auch für Gerd eine Anregung dabei. Ist noch Beta-Status!! Wer mag, kann bei den noch offenen Strings gerne ergänzen.

Sir Rufo 8. Aug 2015 15:59

AW: OS Version Windows 10 ermitteln.
 
Man bekommt im Übrigen die Versionsnummer auch heraus, wenn man die Versionsnummer der kernel32.dll ausliest. Die sollte eigentlich immer mit der Version konform gehen und auch immer vorhanden sein.

Nur für den Fall, das jemand eine Versionsnummer benötigt und sich nicht auf die Registry verlassen möchte und sich auch nicht von
Delphi-Quellcode:
GetVersionEx
täuschen lassen möchte (die im Übrigen in genau dieser kernel32.dll ihre Heimat hat).

Nachtrag

Eine kurze Recherche auf den MS-Seiten bringt dann Folgendes zu Tage:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724429%28v=vs.85%29.aspx

To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll, then call VerQueryValue to obtain the \\StringFileInfo\\<lang><codepage>\\ProductVersion subblock of the file version information.

;)

mm1256 8. Aug 2015 16:38

AW: OS Version Windows 10 ermitteln.
 
Gut recherchiert Sir Rufo ! :thumb:

Auf den Trichter bin ich früher übrigens auch schon mal gekommen, aber die OS-Version bekommt man hierüber auch wieder nur über den Key "ProductVersion" und über die Umwege des Zerlegens und Auswertens der ProductVersion (MajorVersion.MinorVersion.Build).

Bernhard Geyer 8. Aug 2015 17:47

AW: OS Version Windows 10 ermitteln.
 
Zitat:

Zitat von Sir Rufo (Beitrag 1311524)
Man bekommt im Übrigen die Versionsnummer auch heraus, wenn man die Versionsnummer der kernel32.dll ausliest. Die sollte eigentlich immer mit der Version konform gehen und auch immer vorhanden sein.

Nur für den Fall, das jemand eine Versionsnummer benötigt und sich nicht auf die Registry verlassen möchte und sich auch nicht von
Delphi-Quellcode:
GetVersionEx
täuschen lassen möchte (die im Übrigen in genau dieser kernel32.dll ihre Heimat hat).

Das ist aber auch nur der aktuelle Stand. Wenn in 5 Jahren MS die kernel32.dll aufgibt und diese in eine andere DLL verlagert klappt es damit auch wieder nicht.
Und falls jemand als Gegenargument liefert: Aber in den Delphi-Sourcen steht doch das die Funktion in kernel32 liegt. Windows kann den Ladeprozess bei benötigten DLLs umbiegen. In der Exe steht "kernel32.dll wird benötigt", Windows lädt dann aber "superduper32.dll".

Die Wahrscheinlichkeit ist zwar gering das das passiert, aber ausgeschlossen ist das nicht.

bepe 8. Aug 2015 18:16

AW: OS Version Windows 10 ermitteln.
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1311530)
Das ist aber auch nur der aktuelle Stand. Wenn in 5 Jahren MS die kernel32.dll aufgibt und diese in eine andere DLL verlagert klappt es damit auch wieder nicht.
Und falls jemand als Gegenargument liefert: Aber in den Delphi-Sourcen steht doch das die Funktion in kernel32 liegt. Windows kann den Ladeprozess bei benötigten DLLs umbiegen. In der Exe steht "kernel32.dll wird benötigt", Windows lädt dann aber "superduper32.dll".

Die Wahrscheinlichkeit ist zwar gering das das passiert, aber ausgeschlossen ist das nicht.

:-D Ist das dein Ernst? Mal abgesehen davon, dass wir von Windows reden, das ist immerhin bis in die Steinzeit abwärtskompatibel, dürfte ich mit dem "Argument" gar keine Software mehr schreiben. Immerhin könnten sich alle dokumentierten Funktionen mal ändern.

Benutz ja nicht die Bremse! In autonomen Fahrzeugen wird es vielleicht keine geben. Also gewöhn dich nicht daran.

(Sorry, aber das absurd breite Grinsen hat mich zu diesem Post gezwungen.)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr.
Seite 3 von 8     123 45     Letzte »    

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