Delphi-PRAXiS
Seite 5 von 8   « Erste     345 67     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)

Willie1 9. Aug 2015 10:48

AW: OS Version Windows 10 ermitteln.
 
Hallo,
die Tatsache, dass die Registry bei CurrentVersion bei Win 10 den falschen Wert 6.3 zurück gibt, zeigt doch, dass MS diesen Reg-Key nicht weiter pflegt Der Weg über CMD liefert dagegen immer das korrekte Ergebnis ohne Verrenkungen, zumindest so lange wie es CMD gibt!
Auf die Diskussion, warum man/frau aus einem Programm heraus die aktuelle Windows-Version wissen will, möchte ich mich nicht einlassen.
Schönen Sonntag
Willie.

Bernhard Geyer 9. Aug 2015 11:24

AW: OS Version Windows 10 ermitteln.
 
Zitat:

Zitat von Willie1 (Beitrag 1311574)
Hallo,
die Tatsache, dass die Registry bei CurrentVersion bei Win 10 den falschen Wert 6.3 zurück gibt, zeigt doch, dass MS diesen Reg-Key nicht weiter pflegt Der Weg über CMD liefert dagegen immer das korrekte Ergebnis ohne Verrenkungen, zumindest so lange wie es CMD gibt!
Auf die Diskussion, warum man/frau aus einem Programm heraus die aktuelle Windows-Version wissen will, möchte ich mich nicht einlassen.
Schönen Sonntag
Willie.

Ist mir aus gerade erst aufgefallen. Damit hat als MS genau das gleiche gemacht wie schon beim IE der auch nicht mehr über die Registry abfragbar ist.

Bliebe nur die Build-Nummer. Hier wäre dann ein IsMaxBuildNummer(xxx) ausreichend.
Damit wäre man (aktuell) sicher tiefgreifende Updates mitzubekommen (müssten ja neue Buildnummern werden), müsst aber Supporttechnisch immer die aktuellen Builds vor der Veröffentlichung testen um sicher zu sen das es klappt. Hätte halt die Gefahr das eine Krankheit/Unfall/Urlaub dazu führt bei einer neuen Version diese nicht rechtzeitig freigeben zu können und dann ebenfalls verklagt zu werden (wegen unverhältnismäßige Behinderung der Nutzung)

mm1256 9. Aug 2015 14:12

AW: OS Version Windows 10 ermitteln.
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1311578)
Hätte halt die Gefahr das eine Krankheit/Unfall/Urlaub dazu führt bei einer neuen Version diese nicht rechtzeitig freigeben zu können und dann ebenfalls verklagt zu werden (wegen unverhältnismäßige Behinderung der Nutzung)

Perfekte Schlussfolgerung, da stimme ich dir (in diesem Thread) das erste mal voll zu. Und jetzt denke ich wird auch klar, warum das Gedöns mit Versions-Nummern und Build so viele Nachteile hat.

Weiterer Vorteil: Ich kann mich "selber hacken" denn sollte ich mal aus welchen Gründen auch immer nicht mit einem Release nachkommen, hab ich mir in der Zwischenzeit eine Notbremse eingebaut (Nachtrag zu #26)
Delphi-Quellcode:
...
    with TRegistry.Create do
    try
      RootKey := HKEY_LOCAL_MACHINE;
      if OpenKeyReadOnly(rsMyPersonalWinVerRegKey)
      then aWinInfo.ProductName := ReadString('ProductName');
      if OpenKeyReadOnly(rsWinVerRegKey) then begin
        if aWinInfo.ProductName = ''
        then aWinInfo.ProductName := ReadString('ProductName');
...

FarAndBeyond 8. Jan 2016 01:07

AW: OS Version Windows 10 ermitteln.
 
Zitat:

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.
Alter Schwede, wie genau ist nochmal die Definition von "Grob Fahrlässig" ???
Das zeigt einmal mehr das man vor Gericht bestenfalls ein Urteil bekommt und das das Ganze nichts mit Moral, Intelligenz und/oder Ethik zu tun hat, sondern nur mit Geld und Macht.
Mal ehrlich, das ist doch ein Scherz...
Das erinnert an "Raucher verklagt ZigarettenIndustrie..."

Zitat:

die Tragweite der möglichen Folgen erkennen zu können.
Was können denn wohl die Folgen sein, wenn man Software auf einem neuen OS einsetzt, die dafür gar nicht entwickelt worden ist...???
Richtig! Alles Mögliche !!!

Was, ist der Hardwarelieferant außen vor oder was ???
Der Intelligenzquotient wurde für Richter nochmals angepasst... auf die Höhe unterhalb von Toilettenpapier... wat eyh...
Interessant womit man so rechnen muß...

Perlsau 8. Jan 2016 08:17

AW: OS Version Windows 10 ermitteln.
 
Zitat:

Zitat von FarAndBeyond (Beitrag 1326357)
Alter Schwede, wie genau ist nochmal die Definition von "Grob Fahrlässig" ???
Das zeigt einmal mehr das man vor Gericht bestenfalls ein Urteil bekommt und das das Ganze nichts mit Moral, Intelligenz und/oder Ethik zu tun hat, sondern nur mit Geld und Macht. Mal ehrlich, das ist doch ein Scherz... Das erinnert an "Raucher verklagt ZigarettenIndustrie..."

Nein, solche Dinge geschehen tatsächlich. Mir hat vor einigen Monaten ein Auftraggeber indirekt mit einer Schadensersatzklage gedroht, nur weil er selbst bereits terminliche Zusicherungen an Kunden gemacht hatte, bevor die Entwicklung abgeschlossen war. Auslöser war ein unkommentierter Zahlungsverzug, der auch auf Nachfrage nicht aufgeklärt werden konnte, denn er wich diesem Thema tagelang mit allerlei ominösen Antworten aus (von "hab jetzt keine Zeit mehr" bis "muß ich erst in der Buchhaltung nachfragen", und das bei einer OHG, die er und seine Frau betreiben). Daraufhin stellte ich die Remote-Arbeit ein, bis die letzte Rechung beglichen war, und teilte dies mit ... was er dann wiederum zum Anlaß nahm, offiziell die Zahlungen einzustellen, und mir drohte, da er sich selbst angeblich bereits zu Regreßzahlungen genötigt sah. Das war ein derart offensichtliches und durchschaubares Manöver, daß niemand, der das mitbekam, daran zweifelte, daß es lediglich darum ging, nichts mehr zu bezahlen. Das, was noch fehlte, hatte er angeblich in drei Minuten selbst erledigt. Also war die Software fertig bzw. die Arbeit erledigt. Mir entstand dabei ein Schaden von knapp 1400 Euro. Mit diesem Manöver hatte der Kunde meinen Stundenlohn auf eineinhalb Euro gedrückt. Machen kann ich nichts, weil er inzwischen bestreitet, daß ich in den Stunden, die ich abgerechnet habe, überhaupt für ihn gearbeitet hatte. Und hätte ich weiter für ihn gearbeitet, denn täglich kamen neue Anforderungen hinzu, fast wie bei einem festen Arbeitsverhältnis, wäre der Schaden noch größer geworden, denn am Ende hätte er nichts bezahlt. Solche Betrüger gibt es leider mehr als genug, und ich bin leider auch nicht der einzige, den dieser Kunde geschädigt und betrogen hatte, wie ich inzwischen erfahren mußte.

Wenn jemand solches und ähnliches erlebt hat, würden mich Einzelheiten via PM, Mail oder Telefon durchaus interessieren ...

ergo2000 8. Jan 2016 09:13

AW: OS Version Windows 10 ermitteln.
 
Also ich nutze einfach nachfolgende Funktion. Sie funktioniert bei mit allen Windows-Versionen problemlos.


Delphi-Quellcode:
function WMI_Get_Betriebssystem(const mit_Version:boolean=false):shortstring;
const[INDENT][/INDENT]wbemFlagForwardOnly = $00000020;

var
  FSWbemLocator : OLEVariant;
  FWMIService  : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject  : OLEVariant;
  oEnum        : IEnumvariant;
  iValue       : LongWord;

begin
  Result:='?';
  try
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService  := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT Name, Version FROM Win32_OperatingSystem','WQL',wbemFlagForwardOnly);
  oEnum        := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  if oEnum.Next(1, FWbemObject, iValue) = 0 then
           begin
            result:=String(FWbemObject.Name);
            if Pos('|',result)>0 then
               result:=copy(result,1,Pos('|',result)-1);


            if Pos('Microsoft ',result)>0 then
                  Try
                   result:=trim( copy(result,Pos('Microsoft ',result)+10,40));
                  except
                  end;

            if mit_Version then
               begin
                result:=result+' [ '+String(FWbemObject.Version)+' ]';
               end;

            FWbemObject:=Unassigned;
           end;
  except

    try
     Result:=WMI_Get_Betriebssystem;
    except
      Result:='?';
    end;

  end;
end;
Der Code stammt urspünglich irgenwo von "theroadtodelphi" oder "delphifeeds" oder so.

Ralf

Willie1 10. Jan 2016 18:04

AW: OS Version Windows 10 ermitteln.
 
Hallo,
ab Windows 10 wird auch in der Registry nicht mehr der richtige Wert angezeigt!

Hat sich erledigt, zitiere mich selbst.

Luckie 10. Jan 2016 20:50

AW: OS Version Windows 10 ermitteln.
 
Auch nicht mit passenden Manifest in der Anwendung? Da war doch mal was, wenn ich mich recht entsinne.

CHackbart 11. Jan 2016 09:59

AW: OS Version Windows 10 ermitteln.
 
Also mit dem korrekten Manifest liefert GetVersionEx für die Major- und Minorversionsnummer unter Windows 10 den passenden Wert.

bra 11. Jan 2016 12:00

AW: OS Version Windows 10 ermitteln.
 
Zitat:

Zitat von CHackbart (Beitrag 1326617)
Also mit dem korrekten Manifest liefert GetVersionEx für die Major- und Minorversionsnummer unter Windows 10 den passenden Wert.

Leider funktioniert das wohl nur, solange das Manifest der letzten Version entspricht. Wenn also irgendwann mal ein Windows 10+/10.1/11 (oder wie immer das heißen wird) kommt, erkennt die alte Version des Programms das wieder nicht mehr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr.
Seite 5 von 8   « Erste     345 67     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