![]() |
Erkennen des Vista Kompatibilitätsmodus
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 ![]() - Ü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 ![]() - Ü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... |
Re: Erkennen des Vista Kompatibilitätsmodus
Hi,
Zitat:
Gruß Assertor |
Re: Erkennen des Vista Kompatibilitätsmodus
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.
|
Re: Erkennen des Vista Kompatibilitätsmodus
Lies mal hier:
![]() |
Re: Erkennen des Vista Kompatibilitätsmodus
Und auf der Seite steht auch:
Zitat:
Gruß Assertor |
Re: Erkennen des Vista Kompatibilitätsmodus
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 ;) |
Re: Erkennen des Vista Kompatibilitätsmodus
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... |
Re: Erkennen des Vista Kompatibilitätsmodus
Am einfachsten lässt sich AppCompat über die Umgebungsvariable "entdecken":
Delphi-Quellcode:
ps: Es gibt noch (wahrscheinlich undokumentierte) Funktionen, um die permanenten AppCompat-Flags (aus der Registry) zu lesen/setzen: apphelp!GetPermLayers und apphelp!SetPermLayers.
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'; 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. |
Re: Erkennen des Vista Kompatibilitätsmodus
Zitat:
Gruß Assertor |
Re: Erkennen des Vista Kompatibilitätsmodus
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz