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
Antwort Antwort
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: OS Version Windows 10 ermitteln.

  Alt 8. Aug 2015, 17:47
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 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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bepe

Registriert seit: 17. Okt 2006
119 Beiträge
 
#2

AW: OS Version Windows 10 ermitteln.

  Alt 8. Aug 2015, 18:16
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.
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.)

mfg,
bp
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: OS Version Windows 10 ermitteln.

  Alt 8. Aug 2015, 20:06
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.
Borland ist mit Delphi genau in diese Falle gelaufen. Siehe http://entwickler-forum.de/showthrea...ll-geladen-ist
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#4

AW: OS Version Windows 10 ermitteln.

  Alt 8. Aug 2015, 21:36
Den Weg über VerionInfoResourcen von User32.dll und Kernel32.dll sowie ein paar weiterer für mich wichtiger MS-Dateien verwende ich auch, und sogar wenn möglich "hart", also mit einer eigenen Routine zum direktem Auslesen der Resource mit den Versionsinfos.

Auch wenn hier viele es aus funktionaler Anwendersicht sehen, auch ich definiere in meinen Verträgen als "Leistungsgarantie" nur die Funktion in der zum Zeitpunkt der Übergabe aktuellen Systemumgebung.
(Es gab da mal vor laaanger Zeit ein NT4 Update/ServicePack, was "nebenbei" gar manche TCPIP Kommunikation gestört oder beeinflusst hat oder danach noch ein paar Updates für ADO/OLEDB Datenbankzeug... SageKHK ist da auch gern abundzu betroffen)

Im Banken/Finanz & Industrieumfeld ist es also durchaus üblich, Software "fix" für eine definierte Softwareumgebung zu verkaufen, und die Programmausführung nach/für Systemupdates erst auf Anforderung und eigener Testfreigabe (und gegen Entgeld) zu erlauben. Speziell im Netzwerkbereich wurde MS immer besser. Aber wenn ich meine alte Software im Millisekundenbereich mit viel Mühe damals genau darauf optimiert habe, nützt mit in Win10 eine nun selbst optimal funktionierende Lösung für den gleichen API Call garnix, wenn Win10 per VersionInfoApi mir sagen würde, es ist noch ein Win7.

Klar kann man mit NEUEN Manifestdateien Win10 dazu bewegen, sich auch per API sauber zu melden, das nützt alten Programmen aber gar nix. Und genau da soll ja wenigstens eine Warnung möglich sein, das der Anwender nun das System nun voll auf eigenes Risiko ohne die nur für die alte OS-Version geltenden (und NUR dafür bezahlten) Support Ansprüche betreibt.
Ich verhindere bis jetzt da absichtlich nicht die (Weiter)Nutzung, nur lasse ich mir bei Problemen dann jegliche Analyse und den Support auch separat bezahlen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: OS Version Windows 10 ermitteln.

  Alt 8. Aug 2015, 22:53
Alte Programme, die geschrieben worden bevor es Windows XYZ gab, erkennen die neuen Windows Versionen doch eh nicht. Also sollte die Ausgabe "Unbekannte Windows Version" sein. Und wenn das der Fall ist, kannst du sagen: "OK, Benutzung auf eigenes Risiko. Für diese Windows Version ist das Programm nicht getestet."
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: OS Version Windows 10 ermitteln.

  Alt 9. Aug 2015, 01:00
... "OK, Benutzung auf eigenes Risiko. Für diese Windows Version ist das Programm nicht getestet."
Das hatten wir auch schon. Da hat der Kunde seinen Hardwarelieferanten - der gleichzeitig auch einer meiner Vertriebspartner ist - beauftragt meine Software zu installieren, die aber damals nicht für XP freigegeben war. Dann wurde Monate später festgestellt, dass eine Datei der Datenbank defekt ist. Das Problem bzw. die Ursache war die Datenbank. Dummerweise musste daraufhin eine komplette Inventur neu gemacht werden und einiges mehr. Schaden über 30.000 Euro. Und wer hat das dann bezahlt? Ich, bzw. meine Versicherung, weil der Richter der Meinung war, ein einfacher Hinweis reicht für den Anwender nicht aus, die Tragweite der möglichen Folgen erkennen zu können.

Wie in einem vorherigen Beitrag schon angemerkt, man muss die Versionsprüfung und den Umgang damit immer im Zusammenhang mit der Branche sehen, und mit dem Einsatzzweck. Wenn ein Telefonbuch eine falsche Telefonnummer anzeigt, dann wählt der User halt mal eine falsche Nummer. Was solls. Aber wenn eine Finanzsoftware Fehler verursacht dann ist das einfach eine andere Liga, die entsprechend mit anderen Maßstäben beurteilt werden muss.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen

Geändert von mm1256 ( 9. Aug 2015 um 01:01 Uhr) Grund: Rechtschreibfehler
  Mit Zitat antworten Zitat
Gerd01

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

AW: OS Version Windows 10 ermitteln.

  Alt 9. Aug 2015, 07:44
Ich habe den Gedanken von Sir Rufos, die Productversion von kernel32.dll zu prüfen, mal aufgegriffen und eine Abfrage meiner kernerl32.dll gemacht.

Code:
C:\Windows\System32\kernel32.dll
FFI: Product Version: 10.0.10240.16384
FFI: File Version: 6.2.10240.16384
Number of Translations: 1
Translation: 040704B0
  Comments = ""
  CompanyName = "Microsoft Corporation"
  FileDescription = "Client-DLL für Windows NT-Basis-API"
  FileVersion = "10.0.10240.16384 (th1.150709-1700)"
  InternalName = "kernel32"
  LegalCopyright = "© Microsoft Corporation. Alle Rechte vorbehalten."
  LegalTrademarks = ""
  OriginalFilename = "kernel32"
  PrivateBuild = ""
  ProductName = "Betriebssystem Microsoft® Windows®"
  ProductVersion = "10.0.10240.16384"
  SpecialBuild = ""
Also in der Productversion kann man Major,Minor und Build auslesen. Nur die Frage ist, wie sicher ist das für andere Versionen? Ich werde mal weiter recherchieren.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: OS Version Windows 10 ermitteln.

  Alt 9. Aug 2015, 09:38
... "OK, Benutzung auf eigenes Risiko. Für diese Windows Version ist das Programm nicht getestet."
Das hatten wir auch schon. Da hat der Kunde seinen Hardwarelieferanten - der gleichzeitig auch einer meiner Vertriebspartner ist - beauftragt meine Software zu installieren, die aber damals nicht für XP freigegeben war. Dann wurde Monate später festgestellt, dass eine Datei der Datenbank defekt ist. Das Problem bzw. die Ursache war die Datenbank. Dummerweise musste daraufhin eine komplette Inventur neu gemacht werden und einiges mehr. Schaden über 30.000 Euro. Und wer hat das dann bezahlt? Ich, bzw. meine Versicherung, weil der Richter der Meinung war, ein einfacher Hinweis reicht für den Anwender nicht aus, die Tragweite der möglichen Folgen erkennen zu können.
Bei solchen Hintergrund ist es klar das du hier natürlich versuchst eine harte Bremse einzuziehen. Hat den der Kunde den auch Wartung oder ähnliche? Oder hatte er es vor Jahren gekauft und du solltest jetzt über allgemein Produkthaftung dafür gerade stehen (auch wenn du entsprechende Klauseln im Lizenzvertrag hattest)?
Das Urteil ist damit aber sehr ungewöhnlich. Du hast ja damals gar nicht wissen können wie sich Jahre später neuere Windows-Versionen verhalten.
Die Details der Urteilsbegründung wären hier sehr interessant.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: OS Version Windows 10 ermitteln.

  Alt 8. Aug 2015, 18:21
Und was machen wir, wenn morgen ein Klavier auf den Rechner fällt? Wie kommen wir dann an diese Information? Oder was machen wir, wenn der Rechner geklaut wurde?

Irgendwo muss man mal den Zopf abschneiden und ein Ei drauf schlagen.

Dass die Informationen nicht mehr in der Registry stehen oder GetVersionEx gefakte Informationen herausgibt (so ist es ja) ist wesentlich wahrscheinlicher, als dass ein Zugriff auf die kernel32.dll nicht mehr funktioniert.

Und wenn das so sein sollte, dann funktioniert nicht nur die eigene Anwendung nicht mehr, sondern 99% der anderen auch nicht mehr. Man ist also nicht alleine
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: OS Version Windows 10 ermitteln.

  Alt 8. Aug 2015, 19:32
Und wenn das so sein sollte, dann funktioniert nicht nur die eigene Anwendung nicht mehr, sondern 99% der anderen auch nicht mehr. Man ist also nicht alleine
Im Gegenteil, es funktioniert nur die Software nicht mehr, die sich auf irgendwelchen komischen Wegen eine unbedingt korrekte Versionsnummer holt und damit absichtlich neue Windowsversionen nicht unterstützt.
Das ist noch einmal die verschärfte Variante davon, die vor einigen Jahren vor Gericht gelandet ist, bei der die Versionsprüfung der Software aus Versehen neue Windowsversionen ausgeschlossen hat. Selbst da wurde der Hersteller dazu verurteilt diesen Fehler zu beheben... leider finde ich das entsprechende Urteil bzw. die Berichte dazu grad nicht. Ist schon ein paar Jahre her.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:33 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