Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm nur für XP aber nicht in Vista mit Kompatibili... (https://www.delphipraxis.net/136156-programm-nur-fuer-xp-aber-nicht-vista-mit-kompatibili.html)

Fridolin Walther 24. Jun 2009 20:53

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Auf Luckies Seite gibts eine Funktion die das Vorgehen an einer Datei demonstriert:
http://www.michael-puff.de/Developer...leAccess.shtml

Das Vorgehen bei Registry ist analog. Nur das Du Dir halt die ACL des Registry Objektes holst.

Dezipaitor 24. Jun 2009 22:29

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Zitat:

Zitat von Fridolin Walther
Zitat:

Zitat von Dezipaitor
Wenn du damit anfängst, dann wird etwas später auch diese Funktion emuliert. Das ist ein reines Katz- und Mausspiel.

Emuliert ist das falsche Wort. Imho benutzen Shims Code Patches bzw. Hooks wenns komplexer sein soll.

Und warum soll das falsch sein? Die Funktion wird sich so verhalten, als ob sie auf einem XP ausgeführt werden würde: Sie simuliert. Im Komp.modus sind eine Menge extra DLLs für diese Schindel bereitgestellt, die die alten Verhaltensweisen simulieren.
Zitat:

Zitat von Wikipedia
Als Emulator (von lat. aemulare, „nachahmen“) wird in der Computertechnik ein System bezeichnet, das ein anderes nachahmt. Das nachbildende System erhält die gleichen Daten, führt die gleichen Programme aus und erzielt die möglichst gleichen Ergebnisse wie das originale System.

Zitat:

Zitat von Fridolin Walther
Zitat:

Zitat von Dezipaitor
Ich kann mir ehrlich gesagt, kein Grund vorstellen auf Anwendungsebene.

GINA Installer z.B.? Ist ja nicht so das Microsoft keine "Technologien" "gedropt" hätte von XP auf Vista.

Naja, das ist schon eher die Systemebene und nicht die Anwendungsebene. Wenn man im System arbeitet, dann sollte man aber auch schon bei den Systemaufrufen überprüfen, ob das überhaupt so funktioniert hat. Obwohl: GINA wird einfach ignoriert und garnicht erst gestartet, daher ist auch keine Überprüfung notwendig. Der Installer kann da installieren was er will.

--
Das AccessCheck ist nur mit Vorsicht zu genießen. Es ist meist besser, auf die Ressource direkt zuzugreifen und das Ergebnis abzuwarten. Meist benutzt man AccessCheck auch nur, um die maximalen Zugriffsrechte zu bekommen, um diese z.B. unverbindlich anzuzeigen.

Fridolin Walther 24. Jun 2009 22:44

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Zitat:

Zitat von Dezipaitor
Zitat:

Zitat von Fridolin Walther
Zitat:

Zitat von Dezipaitor
Wenn du damit anfängst, dann wird etwas später auch diese Funktion emuliert. Das ist ein reines Katz- und Mausspiel.

Emuliert ist das falsche Wort. Imho benutzen Shims Code Patches bzw. Hooks wenns komplexer sein soll.

Und warum soll das falsch sein?

Zitat:

The word "emulator" was coined in 1957 at IBM, as an optional feature in the IBM 709 to execute legacy IBM 704 programs on the IBM 709. Registers and most 704 instructions were emulated in 709 hardware. Complex 704 instructions such as floating point trap and input-output routines were emulated in 709 software. In 1963, IBM constructed emulators for development of the NPL (360) product line, for the "new combination of software, microcode, and hardware"[13].
It has recently become common to use the word "emulate" in the context of software. However, before 1980, "emulation" referred only to hardware emulation, while "simulation" referred to software emulation[14]. For example, a computer especially built for running programs designed for another architecture is an emulator. In contrast, a simulator could be a program which runs on a PC, so that old Atari games can be run on it. Purists continue to insist on this distinction, but currently the term "emulation" often means the complete imitation of a machine executing binary code.
Aber ist wahrscheinlich Definitions- und Auslegungssache. Für mich ist das ersetzen einer Funktion durch eine andere nicht wirklich Emulation, weil bei mir Emulation fast zwangsläufig immer in Bezug zu Hardware steht, die emuliert werden soll. Hättest Du direkt von Simulation gesprochen, hät ich wahrscheinlich nicht widersprochen. Wenn Du die Definition einer Emulation anders interpretieren oder auslegen möchtest, ist das ok und ich zieh meine Bedenken über die Wortwahl zurück.

Zitat:

Zitat von Dezipaitor
Naja, das ist schon eher die Systemebene und nicht die Anwendungsebene.

Es ist User Mode ...
Zitat:

Zitat von Dezipaitor
Wenn man im System arbeitet, dann sollte man aber auch schon bei den Systemaufrufen überprüfen, ob das überhaupt so funktioniert hat. Obwohl: GINA wird einfach ignoriert und garnicht erst gestartet, daher ist auch keine Überprüfung notwendig. Der Installer kann da installieren was er will.

Was nichts daran ändert, daß ein guter Installer das GINA gar nicht erst installiert auf Vista+. Dafür müsste er aber heraus finden auf welchem System er wirklich läuft - unabhängig von evtl. aktivierten Shims. Und da kann sowas dann nützlich sein.

Dezipaitor 24. Jun 2009 23:08

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Zitat:

Zitat von Fridolin Walther
Zitat:

Zitat von Dezipaitor
Naja, das ist schon eher die Systemebene und nicht die Anwendungsebene.

Es ist User Mode ...
Zitat:

Zitat von Dezipaitor
Wenn man im System arbeitet, dann sollte man aber auch schon bei den Systemaufrufen überprüfen, ob das überhaupt so funktioniert hat. Obwohl: GINA wird einfach ignoriert und garnicht erst gestartet, daher ist auch keine Überprüfung notwendig. Der Installer kann da installieren was er will.

Was nichts daran ändert, daß ein guter Installer das GINA gar nicht erst installiert auf Vista+. Dafür müsste er aber heraus finden auf welchem System er wirklich läuft - unabhängig von evtl. aktivierten Shims. Und da kann sowas dann nützlich sein.

Früher gab es eine Zeit, da hat MS den Programmierern vertraut, dass sie das Richtige machen. Das ist gründlich daneben gegangen und daher gibt es eben diese ganzen Kompatibilitätsmodi.
Vertraue der Vergangenheit; die Nutzung von undokumentierten Funktionen, um z.B. die korrekte Windowsversion herauszufinden ist ein Schuss ins Knie. Die Funktion wird wie ein Laubfeuer im Internet verstreut und von jedem Hobby-Programmierer bedenkenlos eingesetzt. Es wird immer mehr Programme geben, die auf neueren Windows absichtlich den Dienst verweigern, obwohl die Nutzung möglich wäre (es gibt eine Menge Programme, die nicht einmal korrekt die Windowsversion auslesen können: http://www.hitech-blog.com/software/...7-version-6-1/). Und wer bekommt die Schuld? Natürlich MS, weil die ihr OS nicht kompatibel zum Vorgänger halten konnten. Also wird diese Funktion für all diese Programme so umgeschrieben, dass sie die gewünschte Version zurückgibt. Und da wären wir wieder am Anfang des Katz- und Mausspiels.

jaenicke 25. Jun 2009 08:10

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Zitat:

Zitat von Fridolin Walther
Das Vorgehen bei Registry ist analog. Nur das Du Dir halt die ACL des Registry Objektes holst.

Ja, danke, das scheint in Kombination mit RegGetKeySecurity soweit zu klappen. :thumb:

Mal schauen, ob das bei mir passt oder es anders sinnvoller ist. Denn so wie Dezipaitor es geschrieben hat (zugreifen und Ergebnis anschauen) mache ich es ja im Moment und das ist für den Zweck um den es in diesem Thread geht wohl auch die sinnvollere (und einfachere) Variante.

turboPASCAL 25. Jun 2009 08:45

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Hi,

Also für mich hat sich dieses Thema soweit erledigt.

Mein Prg. fragt nun die "echte" Windowsversion mittels RtlGetNtVersionNumbers() ab und überprüft ob der User Administrator ist.
Stimmt alles started das Programm, anderen falls gibt es eine entsp. Meldung und das wird beendet.

Warum der Aufwand ?
Das Programm ist nur für XP und soll dort nur für Admins bereitstehen.
Um zu verhindern das Vistanutzer sich die Registry mit Werten vollmüllen, da es diese Werte in Vista nicht gibt und auch nicht erzeugt werden sollen.
In XP können diese Werte entweder erzeugt werden oder schon existieren.

Dezipaitor 25. Jun 2009 09:03

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Und da rollt der Stein...

Fridolin Walther 25. Jun 2009 10:15

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Ganz ehrlich Dezipaitor ... ich kann die Hintergründe von Microsoft ja ansatzweise verstehen. Aber was schlägt Microsoft vor, wie sich ein GINA Installer oder hier halt das Tool von TurboPascal verhalten soll? Einfach trotzdem die Registry Werte schreiben und Dateien installieren, obwohl genau bekannt ist, daß sie ohne Wirkung sind und das System nur zumüllen?

Luckie 25. Jun 2009 12:47

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Nun ja, so was wird in der Regel durch einen Administrator installiert und der sollte eigentlich wissen, was er macht.

MagicAndre1981 25. Jun 2009 13:01

Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
 
Ab Windows bekommt man eh keine Zertifizierung mehr, wenn das Programm auf eine bestimmte Windows Version prüft und einfach abbricht.

@tP

warum läuft dein Programm denn unter NT6.x nicht? Nur wegen den Rechten oder warum genau? Da ist mir immer noch nicht klar geworden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 Uhr.
Seite 3 von 4     123 4      

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