AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi falsche Windows Version wird angezeigt
Thema durchsuchen
Ansicht
Themen-Optionen

falsche Windows Version wird angezeigt

Ein Thema von Horst0815 · begonnen am 18. Aug 2015 · letzter Beitrag vom 19. Aug 2015
Antwort Antwort
Horst0815

Registriert seit: 23. Mai 2011
Ort: Görlitz
150 Beiträge
 
Delphi XE Starter
 
#1

falsche Windows Version wird angezeigt

  Alt 18. Aug 2015, 20:16
manifest ist eingebunden

Delphi-Quellcode:
 
.....

var OSVersionInfo: TOSVersionInfoEx;

.....

     if (OsVersionInfo.dwMajorVersion = 10) and (OsVersionInfo.dwMinorVersion = 0) then
      begin
        if (OsVersionInfo.wProductType = VER_NT_WORKSTATION) then
          begin
               VersionString := 'Windows 10';
               VersionTyp := wvWin10;
          end
        else
          begin
               VersionString := 'Windows Server 2016'; //Windows Server Technical Preview
               VersionTyp := wvWinServer2016;
          end;
      end;
ausgelesen wird immer "Windows Server 2016"
habe aber die Windows 10 Pro



Auszug MSDN
Code:
Windows 10                           10.0*   10   0   OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server Technical Preview     10.0*   10   0   OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 8.1                           6.3*    6   3   OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2012 R2                6.3*    6   3   OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 8                             6.2     6   2   OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2012                   6.2     6   2   OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
.....

* For applications that have been manifested for Windows 8.1 or Windows 10. Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). To manifest your applications for Windows 8.1 or Windows 10, refer to Targeting your application for Windows.

hab ich irgendwas übersehen?


Edit:OsVersionInfo.wProductType liefert im übrigen 0 zurück insofern währe der Code ok nur Zeigt mein Windows OsVersionInfo.wProductType falsch an

Geändert von Horst0815 (18. Aug 2015 um 21:36 Uhr) Grund: Schreibfehler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: falsche Windows Version wird angezeigt

  Alt 18. Aug 2015, 21:15
Hallo,
bitte das Manifest mal anhängen.

Heiko
Heiko
  Mit Zitat antworten Zitat
Horst0815

Registriert seit: 23. Mai 2011
Ort: Görlitz
150 Beiträge
 
Delphi XE Starter
 
#3

AW: falsche Windows Version wird angezeigt

  Alt 18. Aug 2015, 21:19
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.0.0.0"
    name="Windows10Tools"
    type="*"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
    </application>
  </compatibility>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
  Mit Zitat antworten Zitat
rampant
(Gast)

n/a Beiträge
 
#4

AW: falsche Windows Version wird angezeigt

  Alt 18. Aug 2015, 21:22
Siehe
http://www.delphipraxis.net/186236-i...-anzeigen.html
  Mit Zitat antworten Zitat
Horst0815

Registriert seit: 23. Mai 2011
Ort: Görlitz
150 Beiträge
 
Delphi XE Starter
 
#5

AW: falsche Windows Version wird angezeigt

  Alt 18. Aug 2015, 21:26
Hab da grad nix gesehen was mir weiterhilft oder hab ich was übersehen
Miniaturansicht angehängter Grafiken
unbenannt.jpg  

Geändert von Horst0815 (18. Aug 2015 um 21:34 Uhr)
  Mit Zitat antworten Zitat
rampant
(Gast)

n/a Beiträge
 
#6

AW: falsche Windows Version wird angezeigt

  Alt 18. Aug 2015, 21:42
#13 bzw. dessen Manifest-Link auf
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
möglicherweise?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

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

AW: falsche Windows Version wird angezeigt

  Alt 18. Aug 2015, 21:44
Das Manifest spielt hier keine Rolle bzw. der Fehler ist nicht dort zu suchen, denn es wird ja korrekt in den Abschnitt mit 10.0 (Major.Minor) gegangen; zumal die Compatibility ID für die Workstation und Server-Editionen immer identisch sind. Der Product Type ist falsch. Daher wäre wichtig zu wissen, wie denn die Variable OSVersionInfo gefüllt wird.

Ergänzung: Dass wProductType = 0 ist, kann schonmal nicht sein, denn VER_NT_WORKSTATION ist 1 (und die anderen Werte sind 2 und 3). Das erklärt aber zumindest, warum dein Code das zurückgibt.

MfG Dalai

Geändert von Dalai (18. Aug 2015 um 21:53 Uhr)
  Mit Zitat antworten Zitat
Horst0815

Registriert seit: 23. Mai 2011
Ort: Görlitz
150 Beiträge
 
Delphi XE Starter
 
#8

AW: falsche Windows Version wird angezeigt

  Alt 18. Aug 2015, 22:02
Ja aber weil wProductType = 0 bzw. nicht VER_NT_WORKSTATION ist, springt das Programm ja in die Server Schleife


var OSVersionInfo: TOSVersionInfoEx;


Delphi-Quellcode:
      if (OsVersionInfo.dwMajorVersion = 10) and (OsVersionInfo.dwMinorVersion = 0) then
      begin
        if (OsVersionInfo.wProductType = VER_NT_WORKSTATION) then
          begin
               VersionString := 'Windows 10.0';
               VersionTyp := wvWin10;
          end
        else
          begin
               VersionString := 'Windows Server 2016';
               VersionTyp := wvWinServer2016;
          end;
          Showmessage(inttostr(OsVersionInfo.wProductType)); //liefert 0
     end;
      if (OsVersionInfo.wSuiteMask and VER_SUITE_PERSONAL) = VER_SUITE_PERSONAL then
        VersionString := VersionString + ' Home Edition'
      else
        VersionString := VersionString + ' Professional';
    end;

ändere ich if (OsVersionInfo.wProductType = VER_NT_WORKSTATION) then in
if (OsVersionInfo.wProductType <> VER_NT_WORKSTATION) then wird Windows 10 erkannt was ja aber falsch ist laut MSDN

OsVersionInfo.dwMajorVersion, OsVersionInfo.dwMinorVersion, OsVersionInfo.szCSDVersion, OsVersionInfo.dwBuildNumber und OsVersionInfo.wSuiteMask wird also richtig ausgelesen warum dann OsVersionInfo.wProductType nicht

Geändert von Horst0815 (18. Aug 2015 um 22:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

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

AW: falsche Windows Version wird angezeigt

  Alt 19. Aug 2015, 01:37
Ja aber weil wProductType = 0 bzw. nicht VER_NT_WORKSTATION ist, springt das Programm ja in die Server Schleife
Ja, das ist klar. Ich wollte nur klarmachen, dass der Inhalt dieser Variablen mit 0 eigentlich gar nicht sein kann, weil das nicht vorgesehen ist oder zumindest keine dazu passende Konstante existiert.

Zitat:
ändere ich if (OsVersionInfo.wProductType = VER_NT_WORKSTATION) then in
if (OsVersionInfo.wProductType <> VER_NT_WORKSTATION) then wird Windows 10 erkannt was ja aber falsch ist laut MSDN
Das sollst du ja auch nicht ändern. Der bisher gegebene Code passt schon. Das Problem ist aber davor zu suchen.

Zitat:
[...] wird also richtig ausgelesen warum dann OsVersionInfo.wProductType nicht
Das kannst nur du selbst beantworten, solange du den Code dafür (das Füllen der Datenstruktur bzw. den Aufruf von GetVersionEx mit entsprechendem Drumherum) nicht zeigst. Wir können ja nicht hellsehen . Kann ja auch was Dummes sein, dass der Teil der Struktur nach dem Aufruf von GetVersionEx genullt wird, absichtlich oder nicht.

MfG Dalai
  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 22:38 Uhr.
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