Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wann/Warum meldet sich das UAC? (https://www.delphipraxis.net/92409-wann-warum-meldet-sich-das-uac.html)

CalganX 19. Mai 2007 12:13


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

Hafish 19. Mai 2007 12:56

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.

CalganX 19. Mai 2007 13:06

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

CCRDude 19. Mai 2007 13:18

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.

CalganX 19. Mai 2007 13:20

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

Shark99 19. Mai 2007 14:02

Re: Wann/Warum meldet sich das UAC?
 
Zitat:

Zitat von CCRDude
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.


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>

Bernhard Geyer 19. Mai 2007 14:36

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?

CalganX 19. Mai 2007 14:44

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

Bernhard Geyer 19. Mai 2007 14:50

Re: Wann/Warum meldet sich das UAC?
 
Zitat:

Zitat von CalganX
Aber warum prüft Windows den Dateinamen? Ich dachte darüber wären wir schon lange hinaus.

Mit Vista wird alles anders. Wurde eine Zeitlang empfohlen CreateProcess statt ShellExecute zu nehmen ist je jetzt (UAC sei dank) wieder anders rum.
Zitat:

Zitat von CalganX
Okay, wenigstens weiß ich jetzt, woran es lag. (Und dafür teste ich stundenlang meine Anwendung mit dem Application Compatibility Toolkit :wall:).

Irgendwie habe ich das gefühl das UAC war von MS eher ein Schnellschuß in letzter Minute als lange geplant. Wieso sind denn manche nötigen Tools zur konfiguration nur als Consolenanwendung vorhanden und selbst der Windows Explorer hat seine Probleme mit UAC.

CalganX 19. Mai 2007 14:55

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

Bernhard Geyer 19. Mai 2007 15:06

Re: Wann/Warum meldet sich das UAC?
 
Zitat:

Zitat von CalganX
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 halte es wie die c't. UAC kann man mit einem besoffenen und alzheimerkranken Türsteher vergleichen. Hier könnte MS doch mit Leichtigkeit per Zertifizierungsüberprüfung oder Checksumme eine "Antwort merken" Checkbox einbauen. Und damit DLL-Injektion kein Problem ist auch gleich den Zustand aller geladenen DLL's mit merken.

CCRDude 19. Mai 2007 15:10

Re: Wann/Warum meldet sich das UAC?
 
Nun ja, das war bestimmt so bei Microsoft: "Machen wir Windows noch bunter" - "Oh, jetzt ist es soo langsam, das wir es besser verzögern, bis in 4 Jahren die Hardware dafür soweit ist". :D

Nee, der Apple-Vergleich wär gar nicht mal der schlimmste, oder auch Ubuntu liegt nahe. Dort gibt es ja genau dasselbe - eine Abfrage, sobald es um Administrationsbelange geht, sehr ähnlich dem UAC. Aber dort wird es gelobt, während bei Windows über das UAC geflucht wird. Ich find es ja auch nicht vollkommen ebenbürtig, andererseits braucht eine wirklich gute Lösung auch die Kooperation von Entwicklern, und so manches pauschalisierte Vista-Fluchen hier und anderswo hat mich schon zweifeln lassen, ob Microsoft sowas überhaupt durchbringen könnte.

Ich denke das mit "setup" als Teil des Namens war ein Entgegenkommen gegenüber allen Entwicklern, die noch keine Manifeste eingebunden haben, damit solche Setups eben nicht fehlschlagen, sondern automatisch nach Rechten fragen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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