AGB  ·  Datenschutz  ·  Impressum  







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

GetVersionEx unter Windows 10

Ein Thema von greenmile · begonnen am 18. Dez 2014 · letzter Beitrag vom 21. Dez 2014
Antwort Antwort
Seite 1 von 2  1 2      
dGeek
(Gast)

n/a Beiträge
 
#1

AW: GetVersionEx unter Windows 10

  Alt 20. Dez 2014, 19:20
Allem Anschein nach verabschiedet sich MS von den konkreten Versionsnummern als Entscheidungskriterium und möchte uns Entwickler dazu bewegen, auf Releases zu prüfen:

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
  • IsWindows7OrGreater
  • IsWindows7SP1OrGreater
  • IsWindows8OrGreater
  • IsWindows8Point1OrGreater
  • IsWindowsServer
  • IsWindowsVistaOrGreater
  • IsWindowsVistaSP1OrGreater
  • IsWindowsVistaSP2OrGreater
  • IsWindowsXPOrGreater
  • IsWindowsXPSP1OrGreater
  • IsWindowsXPSP2OrGreater
  • IsWindowsXPSP3OrGreater
  • IsWindowsVersionOrGreater
Man müsste also erst prüfen, ob eine der genannten Funktionen in der Kernel32.dll vorhanden ist und ggf. auch nutzen - wenn nicht, dann auf die alten Funktionen ausweichen, die dann ja - da man offenbar auf einem älteren Windows ist - zuverlässig laufen.
Ich denke da an einen Delphi-Wrapper, der einem diese ganze Fragerei wegkapselt.

Diesbezüglich verstehe ich überhaupt nichts mehr (zu viele sinnlose Änderungern).
Daher eine total dumme Frage:

damit ich die neuen APIs (siehe oben) nutzen kann ..
- muss ich meine Software unter Windows 8.1 kompilieren
oder
- kann ich die aktuell auch mit meinem XE2 unter Windows 7 Home Edition nutzen
oder
- brauche ich eine neue Delphi-Version UND Windows 8.1?
  Mit Zitat antworten Zitat
mm1256

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

AW: GetVersionEx unter Windows 10

  Alt 20. Dez 2014, 19:44
Hallo dGeek,

[edit] erst mal, es gibt keine dummen Fragen, nur leider viel zu oft dumme Antworten[/edit] ...das wollte ich noch los werden

Zitat:
damit ich die neuen APIs (siehe oben) nutzen kann ..
- muss ich meine Software unter Windows 8.1 kompilieren
nein

Zitat:
- kann ich die aktuell auch mit meinem XE2 unter Windows 7 Home Edition nutzen
bringt nur ab Win 8 was

Zitat:
- brauche ich eine neue Delphi-Version UND Windows 8.1?
Das geht mit (fast???) jedem Delphi, ist ja WinApi

Soweit ich das verstehe - also Bitte an die Wissenden: korrigieren wenn ich es falsch verstanden habe - die neue API ist ein Ersatz für die alten Funktionen GetVersion und GetVersionEx ab Windows 8.0. Mit allen vorherigen Versionen funktioniert GetVersion und GetVersionEx nach wie vor. Es gibt auch keine Fehlermeldung, wenn du die Beiden unter 8.0, 8.1, Server 2012 usw. verwendest. Es werden aber nicht mehr alle Daten in der TOSVersionInfoEx zur Verfügung gestellt, z.B. die "dwBuildNumber". GetVersion und GetVersionEx sind also ab Windows 8.0 nicht mehr geeignet, die Windows-Version zu bestimmen.

Das war ja mein Ansatz: Wenn sich die MS-Ler schon für neuere Windows-Versionen immer wieder neue Tugenden einfallen lassen um die Version zu bestimmen, dann habe ich doch mit "älterer" (vor einigen Jahren compilierter) Software generell das Problem, dass eine neue Windows-Version mit GetVersionEx gar nicht erkannt wird. Die alte Software glaubt, sie läuft immer noch unter Win7. Und das ist das Fatale daran, wenn man sich früher ausschließlich auf GetVersionEx verlassen hat. Und darum bin ich auch froh darüber, zusätzlich zu GetVersionEx die Build-Nummer aus der Registry ausgelesen zu haben. Der Vergleich ergibt nämlich bei meiner alten Software einen Unterschied, und das ist der Nutzen daran. Wie man mit der Erkennung des Unterschiedes umgeht, darüber wurde ja schon diskutiert.
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 (20. Dez 2014 um 19:46 Uhr) Grund: es gibt keine dummen Fragen
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#3

AW: GetVersionEx unter Windows 10

  Alt 20. Dez 2014, 19:51
Ich nutze für die Versionsprüfung die bereits von mir hier im Forum gepostete downloadbare Komponente und die funktioniert bis Windows 10 inklusive dwBuildNumber etc. mit GetVersionExW sehr gut.
  Mit Zitat antworten Zitat
mm1256

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

AW: GetVersionEx unter Windows 10

  Alt 20. Dez 2014, 20:00
Wo gibt es denn die Komponente - und ist die mit Source?

BTW ich habe gesucht, aber nichts gefunden. "version" ist ein ignoriertes Suchwort
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#5

AW: GetVersionEx unter Windows 10

  Alt 20. Dez 2014, 22:47
Soweit ich das verstehe - also Bitte an die Wissenden: korrigieren wenn ich es falsch verstanden habe - die neue API ist ein Ersatz für die alten Funktionen GetVersion und GetVersionEx ab Windows 8.0. Mit allen vorherigen Versionen funktioniert GetVersion und GetVersionEx nach wie vor.
Ab Win8.1, wobei es möglich ist, dass MS hier seit 8.0 anregte, die neuen Funktionen zu nutzen bzw. die alten nicht zu benutzen. Ein 8.0 lässt sich auch mit GetVersionEx korrekt erkennen, 8.1 und höher nur dann, wenn die Applikation ein Manifest mit passender Kompatibilität aufweist.

Mal eine ganz doofe Frage:
Nö, die ist nicht doof, denn es gibt nur schlaue Fragen.

Zitat:
Wann und wozu benötige ich die konkrete Windows-Version (wenn ich kein "Ich-zeige-die-Windows-Version-an" Programm schreiben will)?
Ich habe ein Projekt namens Automatisierung, das Software automatisiert auf Windows installieren kann, ohne jedes Mal von Hand alle Installationsroutinen durchzuklappern. Zu diesem Zweck muss meine Automatisierung die Windows-Version kennen, um einige dieser Software-Produkte von vornherein gar nicht erst anzuzeigen, weil einige davon unter bestimmten Windows-Versionen gar nicht erst laufen. Dazu muss genau festlegbar sein, unter welchen Windows-Versionen die Software läuft, denn einige verweigern nunmal den Dienst auf neueren oder älteren Versionen.

MfG Dalai
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#6

AW: GetVersionEx unter Windows 10

  Alt 20. Dez 2014, 23:00
Zitat:
Ein 8.0 lässt sich auch mit GetVersionEx korrekt erkennen, 8.1 und höher nur dann, wenn die Applikation ein Manifest mit passender Kompatibilität aufweist.
Ich hatte es eben mal unter Windows 10 getestet und dort wird Windows von meiner Software korrekt erkannt, obwohl ich GetVersionEx(W) nutze.
Spezielle Manifeste nutze ich nicht
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#7

AW: GetVersionEx unter Windows 10

  Alt 21. Dez 2014, 01:17
Zitat:
Ein 8.0 lässt sich auch mit GetVersionEx korrekt erkennen, 8.1 und höher nur dann, wenn die Applikation ein Manifest mit passender Kompatibilität aufweist.
Ich hatte es eben mal unter Windows 10 getestet und dort wird Windows von meiner Software korrekt erkannt, obwohl ich GetVersionEx(W) nutze.
Spezielle Manifeste nutze ich nicht
Da gibt es nur 3 Möglichkeiten:
  • kein GetVersionEx benutzt bzw. (nur) die neuen Funktionen
  • das Manifest gibt Kompatibilität mit Win10 an; das muss ja kein spezielles Manifest sein, k.a. ob irgendein neueres Delphi die Kompatibilität im Manifest hat, wobei ich das für Win10 nicht so recht glaube (aber wir sind ja hier nicht in der Kirche )
  • du benutzt nicht nur GetVersionEx sondern (auch) andere Methoden, wie z.B. die hier im Thread erwähnte Registry
MfG Dalai
  Mit Zitat antworten Zitat
Insider2004
(Gast)

n/a Beiträge
 
#8

AW: GetVersionEx unter Windows 10

  Alt 21. Dez 2014, 10:42
Übertreibt ihr nicht ein wenig? Ich hatte seit 20 Jahren nie die Notwendigkeit, die Windows Version abzufragen. Mein Zeugs ist so gemacht, dass es auf allen Windowsen läuft.
  Mit Zitat antworten Zitat
mm1256

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

AW: GetVersionEx unter Windows 10

  Alt 21. Dez 2014, 10:57
Nun, "laufen" ist die eine Sache, aber wie löst du OS-Abhängige Situationen, z.B. wenn deine App unter normalem Userkontext läuft, und du eine App mit Admin-Rechten starten musst. Ein Beispiel, wie ich meine, wo man das OS kennen sollte oder muss:

Delphi-Quellcode:
{------------------------------------------------------------------------------}
{-- Anwendung starten, wenn nötig mit Admin-Rechten                          --}
{------------------------------------------------------------------------------}
function RuWin_ShellExec(aHandle: HWND; FileName, Parameters, Directory: string;
                         ShowCmd: Integer; AsAdmin, Wait: boolean): Boolean;
var
  SEI: TShellExecuteInfo;
begin
  FillChar(SEI, SizeOf(SEI), #0);
  SEI.cbSize := SizeOf(SEI);
  SEI.Wnd := aHandle;
  SEI.fMask := SEE_MASK_NOCLOSEPROCESS;
  {-Bis zu XP "AsAdmin" automatisch ignorieren-}
  if WindowsVersion < WinVista then AsAdmin := false;
  if AsAdmin
  then SEI.lpVerb := 'runas'
  else SEI.lpVerb := 'open';
  SEI.lpFile := PChar(FileName);
  SEI.lpParameters := PChar(Parameters);
  SEI.lpDirectory := PChar(Directory);
  SEI.nShow := ShowCmd;
  Result := ShellExecuteEx(@SEI);
  if Result then
  if Wait then begin
    if SEI.hProcess > 32 then begin
      WaitForInputIdle(SEI.hProcess, INFINITE);
      WaitForSingleObject(SEI.hProcess, INFINITE);
    end;
  end;
  CloseHandle(SEI.hProcess);
end;
Oder, wie löst man das besser?
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: GetVersionEx unter Windows 10

  Alt 21. Dez 2014, 11:12
Nun, "laufen" ist die eine Sache, aber wie löst du OS-Abhängige Situationen,
Für einfache Anwendungen beschränkt man sich halt auf das kleinest OS.
Und mit dynamischen Laden der API-Einsprungspunkte kann man auch einiges abfangen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 02:07 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