Einzelnen Beitrag anzeigen

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