AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Windows Kompatibilitätsmodus verbieten
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Kompatibilitätsmodus verbieten

Ein Thema von Michael II · begonnen am 6. Jan 2023 · letzter Beitrag vom 6. Jan 2023
Antwort Antwort
Seite 1 von 2  1 2      
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#1

Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 13:46
Kürzlich meldete sich ein Kunde, er könne meine Software nicht mehr nutzen. Dank einer Teamviewer Sitzung sah ich, dass meine App auf dem Kunden Computer wider Erwarten beim Start Admin Rechte verlangt. Grund: Der Kompatibilitätsmodus war für die App eingeschaltet; OS war auf "Windows XP SP3" gesetzt.

Meine Frage: Kann ich verhindern, dass für meine App der KM aktiviert werden kann?
Michael Gasser

Geändert von Michael II ( 6. Jan 2023 um 16:33 Uhr)
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#2

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 14:19
Hallo,
es sollte reichen, das Programmm aus dem entsprechen Registry Key zu löschen.

https://www.verboon.info/2011/03/run...tibility-mode/

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 14:40
Das kann das Programm selbst aber nur machen, wenn es schon läuft. Also bleibt zumindest die Passwortabfrage beim ersten Start.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.647 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 15:18
Wenn du ein Manifest drin hättest, das dein Programm als kompatibel mit einer neueren Version von Windows ausweist, sollte man auch keinen so alten Kompatibilitätsmodus setzen können, der Adminrechte anfordert.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 16:31
Besten Dank für all eure Meldungen.

Danke mmw. Immerhin kann ich so die Registry-Einträge im Installer der App killen. Dankeschön.
(Neuinstallation half dem Kunden nix, da der KM Registry-Eintrag bestehen bleibt. Der Wert wurde wohl von irgend einem "Optimierer" und sicher nicht von mir oder direkt vom Kunden gesetzt.)

Wie Uwe schreibt: Wenn die App selbst den KM killen soll, dann muss der Kunde Admin freischalten. (Weit über 50% meiner Kunden haben mit Windows Dingen absolut nix am Hut; die App wird oft von Tochter oder Sohn installiert. Steiniger Weg.)

Danke jaenicke:
Ich verwende für die App das Manifest, welches Delphi 11.2 z.V. stellt. Sollte ich dieses anpassen?
Du schreibst, man sollte XP Kompatibilität nicht setzen können:
Ich habe rasch getestet, ob ich für Delphi 11.2 den Kompatibilitätsmodus auf "Win XP SP3" setzen kann. Ich kann. Ist das Manifest von Delphi 11.2 also auch "mangelhaft"?
Ich verwende: Microsoft Windows 11 [Version 10.0.22623.1095]
Der Kunde hat ein Win 10 drauf.

[Dieses "Problem" war mir bisher nicht bekannt. App auf mehr als 40'000 Kisten installiert, ein paar hundert Kisten haben bis dato >3000 Updates installiert. Die App lief früher auch unter XP, ohne Admin. Wird im KM XP SP3 Admin verlangt, weil das Manifest von 11.2 dies bewirkt? Da sollte ich mich wohl dringend mal einlesen...]
Michael Gasser

Geändert von Michael II ( 6. Jan 2023 um 16:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 17:18
Verbieten geht nicht, aber man kann verhindern, dass durch Windows es automatisch aktiviert wird.

Du könntest GetSystemInfo mit GetNativeSystemInfo vergleichen und versuchen zu erkennen, ob der Kompatibilitätsmodus aktiv ist und dann den Nutzer warnen informieren.



"Automatisch" geht der Kompatibilitätsmodus eigentlich nur an, wenn die ID der jeweiligen Windows-Version nicht in der Liste der supportedOS enthalten ist.
Es wird dann davon ausgegangen daß die Anwendung nicht kompatibel ist und über eine Heuristik oder Sonstwas wird dann versucht zu erkennen was vermutlich nötig ist.
z.B. wird über Keywords im Dateinamen, wie z.B. "setup" oder "install", davon ausgegangen, dass es ein "Installer" ist und demnach Adminrechte benötigt.

Manuell kann man aber dennoch daran etwas verändern.



Delphi 11.2 sieht diesbezüglich OK aus.
Code:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
   <application>
      <!--The ID below indicates app support for Windows Vista -->
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <!--The ID below indicates app support for Windows 7 -->
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
      <!--The ID below indicates app support for Windows 8 -->
      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
      <!--The ID below indicates app support for Windows 8.1 -->
      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
      <!--The ID below indicates app support for Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>         
   </application>
</compatibility>
Ja, Windows 11 fehlt scheinbar, aber auch nur, wenn man nicht bedenkt, dass Windows 11 keine neue ID bekommen hat und immernoch die Windows 10-ID benutzt.
$2B or not $2B

Geändert von himitsu ( 6. Jan 2023 um 17:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

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

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 17:25
Wenn du ein Manifest drin hättest, das dein Programm als kompatibel mit einer neueren Version von Windows ausweist, sollte man auch keinen so alten Kompatibilitätsmodus setzen können, der Adminrechte anfordert.
Diese Aussage verstehe ich nicht. Selbst bei Anwendungen, die Kompatibilität für alle bekannten Windows-Versionen ausweisen, kann man diese im Kompatibilitätsmodus ausführen. Warum sollte das auch nicht gehen? Gerade das Ausführen als Admin kann je nach Situation sinnvoll sein (auch wenn man es grundsätzlich nur dann tun sollte, wenn es wirklich nicht anders geht).

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 18:40
Das muß ja auch möglich sein,
denn nur weil der Entwickler "denkt" sein Programm sei kompatibel (oder es einfach nur blind gesetzt hat), dann muß es das noch lange nicht sein.

Vor allem nicht im Delphi, seit Delphi diese Kompatibilität vorgibt und wir kein eigenes Manifest mehr angeben.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.647 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 19:19
Selbst bei Anwendungen, die Kompatibilität für alle bekannten Windows-Versionen ausweisen, kann man diese im Kompatibilitätsmodus ausführen. Warum sollte das auch nicht gehen? Gerade das Ausführen als Admin kann je nach Situation sinnvoll sein (auch wenn man es grundsätzlich nur dann tun sollte, wenn es wirklich nicht anders geht).
Also hier (Windows 11) kann ich dann nur bis Windows 7 zurück gehen, was die automatische Anforderung von Adminrechten nicht einschließt. Ältere Anwendungen von mir mit alten Manifesten kann ich hingegen bis auf Windows 95 setzen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Windows Kompatibilitätsmodus verbieten

  Alt 6. Jan 2023, 19:46
9x kann mit aktuellerem Delphi auch garnicht gehn, da RTL/VCL viele WinAPIs benutzt, welche erst später eingeführt wurden.

Es wäre schon intelligent, wenn die Imports geprüft werden und dann komplett inkompatible Windows-Versionen ausgeschlossen würden.



Oder komplett ganz einfach.
Im PE-Header steht die Mindestversion und das wurde vor 'ner kleinen Weile im Delphi hochgesetzt.
$2B or not $2B

Geändert von himitsu ( 6. Jan 2023 um 21:41 Uhr)
  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 15:59 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