![]() |
Wann/Warum meldet sich das UAC?
Hi,
okay, jetzt mal für Dumme: welche Gründe kann es dafür geben, dass sich das UAC von Vista beim Starten eines Programmes meldet? Ich habe drei Anwendungen, die alle ein bestimmtes Modul verwenden. Die ersten beiden sind nur Demo-Anwendungen (einmal wird das Modul direkt einkompiliert, einmal über eine DLL aufgerufen) und die dritte ist eine echte Anwendung, die das Moduk über eine DLL aufruft. Das Modul lädt nur eine XML-Datei aus dem Internet herunter, parst diese und öffnet eine Internet-URL über ShellExecute. Die beiden Demo-Anwendungen wurden mit Turbo Delphi kompiliert, die Praxis-Anwendung mit Delphi 2005. Alle Programme besitzen ein TXPManifest. Keines der Programme hat eine digitale Signatur. Wenn ich nun die Demo-Anwendungen starte, meldet sich bei mir das UAC mit dem Hinweis, dass das Programm unbekannter Herkunft ist und es meiner Zustimmung bedarf das Programm zu starten. Wenn ich aber die Praxis-Anwendung starte, so kommt kein Hinweis - und das, obwohl es zur zweiten Demo-Anwendung nahezu vollkommen identisch ist (nur dass noch mehr Funktionen drumherum gepackt sind). Ich verstehe die Logik hinter dem UAC noch nicht so ganz. Kann mir das mal bitte jemand näher bringen? Entscheidet Vista bereits beim Start, ob das Programm bestimmte API-Calls macht, und deswegen geblockt werden muss? Wenn ja, welche API-Calls sind das? Ich will letztlich, dass das UAC vollkommen schweigt, denn weder Anwendung noch Modul sind in irgendeiner Form bedenklich. Chris |
Re: Wann/Warum meldet sich das UAC?
Also die Sache ist die: Wann genau Programme durch UAC erstmal blockiert werden weiß ich nicht. Allerdings ist mir auch aufgefallen, dass das bei jedem §$%$% kommt, weshalb ich es komplett ausgestellt habe. Wenn man einigermaßen Ahnung vom PC hat kann man das wohl ohne große Bedenken deaktivieren, denn man kenn die Risiken bei unbekannten Programmen und ein Klick ändert da gar nichts dran.
An dieser Stelle will ich nur mal an das überschreiben einer Datei erinnern (3-5 mal bestätigen :wall:). Meines Erachtens hat Microsoft da etwas übers Ziel hinausgeschossen und solange das nicht gefixt wurde, bleibt es bei mir ausgestellt. |
Re: Wann/Warum meldet sich das UAC?
Naja, die Frage war nicht, ob du es deaktiviert hast oder nicht. :roll:
Das Gros der User hat es deaktiviert und auch nicht ganz unberechtigt. Dementsprechend muss man als Entwickler darauf reagieren. Wenn es nur darum geht, das für den Profi beste auszuwählen und zu unterstützen, kann ich gleich nur noch für OS X oder Linux programmieren. :roll: Chris |
Re: Wann/Warum meldet sich das UAC?
Tja, mit TXPManifest hast Du schonmal genau das falsche getan ;)
Wirf es raus, wirf die Unit XPMan aus allen eigenen Units raus, und erstell Dir dein Manifest selber - das mitgelieferte Manifest hat nämlich nicht den Vista-Teil, der notwendig ist, um die gewünschte Sicherheitsebene vorzugeben. Dann zumindest dürfte ein zu anspruchsvoller Funktionsaufruf ja einen Fehler schmeissen statt das Programm das UAC zu triggern zu lassen, und wenn Dein Fehlerhandling gut genug ist, sollte die Schwachstelle gefunden sein. |
Re: Wann/Warum meldet sich das UAC?
Hi,
okay, werde ich gleich mal versuchen, wenn sich mein System entscheidet, mir wieder zu gehorchen. Aber warum gibt es einen Unterschied zwischen dem Turbo- und dem D2005-Manifest? Und warum werden Programme nicht einfach auf User-Ebene gestartet? Mehr brauche ich doch gar nicht!? :gruebel: Chris |
Re: Wann/Warum meldet sich das UAC?
Zitat:
Was ist der Vista Teil? Mein XP Manifest schau so aus:
Delphi-Quellcode:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="CompanyName.ProductName.MyProgram" type="win32" /> <description>Your Application Description</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> |
Re: Wann/Warum meldet sich das UAC?
Steht bei irgendeinem der Programm als Namensbestandteil im Exenamen oder in den Programm-Info-Ressourcen Setup, Install oder Update?
|
Re: Wann/Warum meldet sich das UAC?
Hi,
Tatsache... das wars. Danke, Bernhard. Aber warum prüft Windows den Dateinamen? Ich dachte darüber wären wir schon lange hinaus. Okay, wenigstens weiß ich jetzt, woran es lag. (Und dafür teste ich stundenlang meine Anwendung mit dem Application Compatibility Toolkit :wall:). Chris |
Re: Wann/Warum meldet sich das UAC?
Zitat:
Zitat:
|
Re: Wann/Warum meldet sich das UAC?
Ich verstehe nicht, wie man so lange für das Betriebssystem gebraucht hat. Die/das UAC ist insgesamt etwas... Naja. Es erfüllt seinen Zweck und es ist wenigstens ein Schritt in die richtige Richtung. Aber es ist nichts Halbes und nichts Ganzes. Ich könnte jetzt mit einem Vergleich zu Apple anfangen, aber dann fliegen hier die Fetzen. *g*
Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 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