AGB  ·  Datenschutz  ·  Impressum  







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

VerifyVersionInfo liefert immer False

Ein Thema von Luckie · begonnen am 6. Nov 2006 · letzter Beitrag vom 22. Sep 2010
 
Benutzerbild von Luckie
Luckie

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

VerifyVersionInfo liefert immer False

  Alt 6. Nov 2006, 00:15
Ich habe die API-Funktion VerifyVersionInfo
Delphi-Quellcode:
type
  DWORDLONG = Int64;

type
  POSVersionInfoEx = ^TOSVersionInfoEx;
  TOSVersionInfoEx = packed record
    dwOSVersionInfoSize: DWORD;
    dwMajorVersion: DWORD;
    dwMinorVersion: DWORD;
    dwBuildNumber: DWORD;
    dwPlatformId: DWORD;
    szCSDVersion: array[0..127] of AnsiChar;
    wServicePackMajor: Word;
    wServicePackMinor: Word;
    wSuiteMask: Word;
    wProductType: Byte;
    wReserved: Byte;
  end;

const
  VER_EQUAL = 1; // The current value must be equal to the specified value.
  VER_GREATER = 2; // The current value must be greater than the specified value.
  VER_GREATER_EQUAL = 3; // The current value must be greater than or equal to the specified value.
  VER_LESS = 4; // The current value must be less than the specified value.
  VER_LESS_EQUAL = 5; // The current value must be less than or equal to the specified value.

  VER_AND = 6; // All product suites specified in the wSuiteMask member must be present in the current system.
  VER_OR = 7; // At least one of the specified product suites must be present in the current system.

  VER_BUILDNUMBER = $0000004; // dwBuildNumber
  VER_MAJORVERSION = $0000002; // dwMajorVersion If you are testing the major version, you must also test
                              // the minor version and the service pack version.
  VER_MINORVERSION = $0000001; // dwMinorVersion
  VER_PLATFORMID = $0000008; // dwPlatformId
  VER_SERVICEPACKMAJOR = $0000020; // wServicePackMajor
  VER_SERVICEPACKMINOR = $0000010; // wServicePackMinor
  VER_SUITENAME = $0000040; // wSuiteMask
  VER_PRODUCT_TYPE = $0000080; // wProductType

function VerifyVersionInfoW(var VersionInfo: TOSVersionInfoEx; TypeMask: DWORD; Conditionalmask: DWORDLONG): BOOL;
  stdcall; external 'kernel32.dll';
function VerSetConditionMask(dwlConditionMask: LONGLONG; TypeBitMask: DWORD; ConditionMask: Byte): LONGLONG; stdcall;
  external 'kernel32.dll';

function IsWinXPOrLater: BOOL;
var
  osvi : TOSVersionInfoEx;
  ConditionMask : DWORD;
  op : Integer;
begin
  ConditionMask := 0;
  op := VER_GREATER_EQUAL;

  ZeroMemory(@osvi, sizeof(TOSVersionInfoEx));
  osvi.dwOSVersionInfoSize := sizeof(TOSVersioNinfoEx);
  osvi.dwMajorVersion := 5;
  osvi.dwMinorVersion := 1;
  osvi.wServicePackMajor := 2;
  osvi.wServicePackMinor := 0;

  VerSetConditionMask(ConditionMask, VER_MAJORVERSION, op);
  VerSetConditionMask(ConditionMask, VER_MINORVERSION, op);
  VerSetConditionMask(ConditionMask, VER_SERVICEPACKMAJOR, op);
  VerSetConditionMask(ConditionMask, VER_SERVICEPACKMINOR, op);

  result := VerifyVersionInfoW(osvi, VER_MAJORVERSION or VER_MINORVERSION or VER_SERVICEPACKMAJOR or
    VER_SERVICEPACKMINOR, ConditionMask);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  res : BOOL;
begin
  res := IsWinXPOrLater;
  if res then
    ShowMessage('XP SP1 oder höher')
  else
    ShowMessage('Nicht Win XP SP1 oder höher');
end;
Aber die liefert mir immer False zurück, obwohl ich Windows XP SP2 habe, wo sie eigentlich True liefern sollte. Woran liegt das?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
 


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 11:56 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