![]() |
Programm nur für XP aber nicht in Vista mit Kompatibili...
Hi,
Ich habe gerade das Problem das mein Programm nur unter XP laufen darf. Was mach ich denn wenn der User es im Kompatibilitätsmodus zB. unter Vista laufen lässt ? Dem Prg. werden ja dann "falsche" VersionsInformationen vorgegaukelt. In der Registry rumrühren wollte ich eigentlich nicht. Nun könnte man noch das Windows eigene Programm "Ver" bzw. "Winver.exe" verwenden... Gibt es eventuell andere Lösungen ? |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Versuch einfach mal auf eine API zuzugreifen, welche es noch nicht in XP gibt. :stupid:
Wenn das Programm abstürzt, dann darf es da laufen. OK, oder schau halt nur nach, ob sie vorhanden ist :angel2: |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Aber ne Idee. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Warum darf denn das Programm nur unter XP laufen? Ich meine das muss doch einen Grund haben, kann man das daran nicht entscheiden? :gruebel:
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Prinzipiell könnte man auch die undokumentierte API RtlGetNtVersionNumbers benutzen. Frag mich aber bitte nicht wies da mit Kompatibilitätsproblemen aussieht ;).
Delphi-Quellcode:
Bei einem kurzen Test unter Windows 7 wurde weiterhin 6.1 ausgespuckt statt 5.1 wenn die Anwendung im XP Kompatibilitätsmodus gestartet wurde.
procedure RtlGetNtVersionNumbers(var dwMajorVersion : DWORD; var dwMinorVersion : DWORD; UnknownButShouldBeNull : Pointer); stdcall; external 'ntdll.dll';
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
@0xF30FC7, werde ich mir mal angucken. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
RtlGetNtVersionNumbers hat die zurück gegebenen Werte hardcoded. Bedeutet, egal welche Einstellungen der User dort vorgenommen hat, die Werte sollten stets identisch sein. Ich hab zwischenzeitlich auch gefunden, wozu der letzte Parameter gut sein soll: Das ist die Build Number. In meinen Tests allerdings, gabs dort einen stets einen mehr oder weniger zufälligen Wert statt einer Build Nummer. Die Funktion scheint übrigens ab Windows XP vorhanden zu sein.
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Unter XP kannst du die Rechte aber genauso wenig voraussetzen wie dass unter Vista diese nicht vorhanden sind. ;-)
Warum versuchst du den Schreibzugriff nicht einfach? |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Wenn du damit anfängst, dann wird etwas später auch diese Funktion emuliert. Das ist ein reines Katz- und Mausspiel.
Die Frage ist, warum du nicht Vista unterstützen kannst. Nach meiner Meinung solltest du auf jeden Fall das Ausführen auch unter Windows > XP erlauben, jedoch mit einer einmaligen Warnung, dass das OS nicht offiziell unterstützt wird. Ich kann mir ehrlich gesagt, kein Grund vorstellen auf Anwendungsebene. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Zitat:
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Ich prüfe das im Moment experimentell. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Übrigens: Microsoft selbst entscheidet auch nicht auf Grund der Gruppenzugehörigkeit ob Du Admin bist oder nicht, wie es die meisten "IsAdmin" Funktionen es tun, die so rumschwirren, sondern auf Grund der Rechte die Du tatsächlich besitzt. Sobald Du ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Zitat:
Zitat:
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Also wenn du das meinst, dann ist das nicht so einfach. Aber ich sprach von Administratoren und nicht von Rechten. Denn die Sicherheit die er will, die wird er auch nicht bei XP haben. Aber auch dein Problem ist nicht unmöglich zu lösen, nur der Aufwand ist etwas größer. Wenn du nach Ideen suchst, dann guck dir man das Programm ![]() |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Windows sieht dafür die Verwendung der
![]() |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Was 0xF30FC7 geschrieben hat ist nett, gilt aber für XP und Vista. Also verstehe ich nicht wieso du mit deinem Problem ein dito gibst? Wenn du Vista erkennen willst, dann mach es. Dein Winver.exe Vorschlag ist nicht mal schlecht und nicht mal schwer umzusetzen. Etwas besseres kriegst du nicht hin. Einfach nur eine Funktion nehmen die die Version eines Programms ermittelt und schon bist du schlauer und alle Sorgen loß. So eine Funktion kannst du zur Not von mir kriegen und dein Problem ist in fünf Minuten erledigt. Aber jetzt damit zu kommen, daß es ja möglich ist die Rechte zu manipulieren, also deshalb eine IsAdmin Funktion ablehnen, ist Quatsch. Denn auch bei XP kannst du XP, Eingeschränkten Konto und alle Rechte haben. EDIT: Mir ist gerade etwas eingefallen. Das ist doch dein Programm, oder? Also wenn du nicht willst, daß man nicht in die Reg schreibt, wieso schreibst du dann in die Reg? Admin hin oder her. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Ich hatte das nur erst einmal nach hinten geschoben im Plan, weil ich bei den ganzen Funktionen erst einmal gar nicht wusste welche dazu geeignet ist. |
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:
![]() Das Vorgehen bei Registry ist analog. Nur das Du Dir halt die ACL des Registry Objektes holst. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Zitat:
Zitat:
-- 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. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
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: ![]() |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
![]() 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. |
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. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Und da rollt der Stein...
|
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?
|
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.
|
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. |
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Zitat:
|
Re: Programm nur für XP aber nicht in Vista mit Kompatibili.
Naja, MS hat entschieden, dass der Benutzer immer das letzte Wort haben soll. Das fängt ja schon an mit dem Terminieren von Prozessen. Dagegen kann man auch nichts machen - auf dem normalen Weg. Bei Dateien im Explorer verstecken ist es dasselbe.
Wenn der Benutzer den Komp.modus einschaltet, dann ist es sein gutes Recht, dass das Programm zumindest startet. Wer weiß, vllt. hat er einen guten Grund sich sein System zu zerschießen. Der Befehl Format hält den Benutzer mit Adminrechten auch nicht zurück, Dummes zu machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 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-2025 by Thomas Breitkreuz