AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Erkennen des Vista Kompatibilitätsmodus
Thema durchsuchen
Ansicht
Themen-Optionen

Erkennen des Vista Kompatibilitätsmodus

Ein Thema von DevidEspenschied · begonnen am 29. Jul 2008 · letzter Beitrag vom 29. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#1

Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 11:24
Hi,

kennt jemand Möglichkeiten, den Windows Vista Kompatibilitätsmodus innerhalb von Delphi zu erkennen ?

Ich muss herausfinden, welche genaue Betriebssystemversion installiert ist, und dafür gibt es hier ja auch bereits Komponenten. Die Erkennung des Kompatibilitätsmodus (etwa für Windows XP SP2) gestaltet sich aber schwerer. Denn man kann hier nicht etwa GetVersionEx verwenden, da diese ebenfalls die Werte des Kompatibilitätsmodus zurückliefert. Die aktuelle Toolbox-Ausgabe schlägt hier folgendes vor:

- Überprüfung evtl. nur unter Vista vorhandener DLL-Dateien im System32-Verzeichnis (hier kenne ich aber nicht die Dateien und wage zu bezweifeln, dass diese Methode sicher genug ist)
- Überprüfung, ob bestimmte unter Vista verfügbare API-Funktionen lauffähig sind (etwa GetProductInfo)
- Überprüfung bestimmter Registryeinträge

Hat jemand noch andere Vorschläge bzw. bereits eine Funktion, um den Kompatibilitätsmodus zu ermitteln ?

Danke für die Antworten...
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#2

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 11:29
Hi,
Zitat von devidespe:
Ich muss herausfinden, welche genaue Betriebssystemversion installiert ist
Wenn ein Programm im Kompatibilitätsmodus versetzt wird, gibt es meist gute Gründe dafür. Warum möchtest Du denn das genau machen?

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#3

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 11:51
Das Erkennen des Vista-Kompatibilitätsmodus wird benötigt, weil mein Programm bestimmte Vista-Extensions benutzt, und ich diese erst freischalte, wenn wirklich Vista geladen ist.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 12:10
Lies mal hier: http://17slon.com/blogs/gabr/2007/02...ect-vista.html
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#5

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 12:17
Und auf der Seite steht auch:
Zitat:
some API functions work more like they did in the selected OS version
Ich halte nichts davon, den Kompatibilitätsmodus zu umgehen. Wofür? Welche "Extension" ist es denn? Der TaskDialog?

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 12:21
Lass ihn doch

Ist mir zwar auch schleierhaft, wozu er das braucht, da Vista nur auf Vista laufen kann. Oder kann XP jetzt schon Vista emulieren? Und wenn jemand ein speziell für Vista entwickeltes Programm unter Vista in den Kompatibilitätsmodus schickt ist selber schuld
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#7

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 12:23
Danke, der Link scheint sich mit diesem Thema genauer zu befassen.

@Assertor: Es handelt sich bei meine Applikation um eine Unternehmenslösung, bei der klar in den Systemvoraussetzungen steht, dass der Kompatibilitätsmodus nicht aktiv sein darf. Auch wenn Du nicht so viel davon hälst, ich brauche dieses Feature...
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 12:46
Am einfachsten lässt sich AppCompat über die Umgebungsvariable "entdecken":
Delphi-Quellcode:
const
  AppCompatLayerEnvironmentVariable = '__COMPAT_LAYER';

const
  // OS Version
  AppCompatLayerNameWin95 = 'Win95';
  AppCompatLayerNameNT4SP5 = 'NT4SP5';
  AppCompatLayerNameWin98 = 'Win98';
  AppCompatLayerNameWin2000 = 'Win2000';
  AppCompatLayerNameWinXPSP2 = 'WinXPSp2';
  AppCompatLayerNameWinSrv03SP1 = 'WinSrv03Sp1';
  // Display Settings
  AppCompatLayerName256Color = '256Color';
  AppCompatLayerName640x480 = '640X480';
  AppCompatLayerNameDisableThemes = 'DisableThemes';
  AppCompatLayerNameDisableDWM = 'DisableDWM';
  AppCompatLayerNameHighDpiAware = 'HighDpiAware';
  AppCompatLayerNameDisableCicero = 'DisableCicero';
  // LUA
  AppCompatLayerNameRunAsAdmin = 'RunAsAdmin';
  AppCompatLayerNameLUA = 'LUA';
  AppCompatLayerNameLuaCleanup = 'LUACleanup';
  // Misc
  AppCompatLayerNameInternational = 'International';
  AppCompatLayerNameProfilesSetup = 'ProfilesSetup';
ps: Es gibt noch (wahrscheinlich undokumentierte) Funktionen, um die permanenten AppCompat-Flags (aus der Registry) zu lesen/setzen: apphelp!GetPermLayers und apphelp!SetPermLayers.
pps: Wenn du die echte Version wissen willst, kannst Du WMI verwenden (Win32_OperatingSystem), um AppCompat zu umgehen... das Parsen der Eigenschaften ist halt relativ aufwendig zu implementieren.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#9

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 12:50
Zitat von devidespe:
@Assertor: Es handelt sich bei meine Applikation um eine Unternehmenslösung, bei der klar in den Systemvoraussetzungen steht, dass der Kompatibilitätsmodus nicht aktiv sein darf. Auch wenn Du nicht so viel davon hälst, ich brauche dieses Feature...
Sehr merkwürdig Wenns später nicht läuft, dank eines ServicePacks oder so, aber nicht beschweren

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#10

Re: Erkennen des Vista Kompatibilitätsmodus

  Alt 29. Jul 2008, 13:11
Zitat von nicodex:
Am einfachsten lässt sich AppCompat über die Umgebungsvariable "entdecken":

Delphi-Quellcode:
const
  AppCompatLayerEnvironmentVariable = '__COMPAT_LAYER';
  ...
Der Weg über die Umgebungsvariable ist meiner Meinung nach am effektivsten, leider existiert '__COMPAT_LAYER' in meinem Vista Business nicht. Zumindest über das Set-Kommando der Kommandozeile.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  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 23:36 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