Delphi-PRAXiS
Seite 1 von 2  1 2      

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 Uhr.
Seite 1 von 2  1 2      

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