4 Stimmen

Erhöhung der UAC-Eingabeaufforderung - wie funktioniert das?

Windows zeigt UAC-Eingabeaufforderungen auf dem "sicheren Desktop" an, wenn bestimmte sicherheitsrelevante Vorgänge ausgeführt werden müssen. Offensichtlich gibt es irgendwo eine API, die den sicheren Desktop erstellt und ein Fenster darauf anlegt, aber ich habe keine Ahnung, wo ich etwas über die beteiligten Mechanismen herausfinden könnte. Ich schätze, ich könnte die UAC-Mechanismen zurückentwickeln, aber ich bin nicht so gut in diesem Bereich des Reverse Engineering (und ich bin ziemlich sicher, dass es einige rechtliche Konsequenzen gibt...)

Wie auch immer, ich weiß, dass es eine API gibt, um neue Desktops in der aktuellen Sitzung zu erstellen, aber in der Dokumentation, die ich finden kann, werden sichere Desktops nicht erwähnt. Aus Neugier würde ich gerne wissen, wie die ganze sichere Desktop / UAC Eingabeaufforderung Erstellung funktioniert.

Disclaimer: Dies ist rein theoretisch, und ich bin nicht auf der Suche, um diese in einem meiner Code zu implementieren.

3voto

Harry Johnston Punkte 34354

Aus Sicht des Systems ist der sichere Desktop wahrscheinlich nur ein ganz normaler Desktop mit einer geeigneten ACL. Beachten Sie, dass CreateDesktop Ihnen erlaubt, einen Sicherheitsdeskriptor für den neuen Desktop anzugeben.

Soweit ich weiß, hat der sichere Desktop kein spezielles Verhalten, so dass ich keinen Grund sehe, anzunehmen, dass eine zusätzliche API (dokumentiert oder nicht) beteiligt ist.

1voto

Satyrn Punkte 53

Sie haben das vielleicht schon gesehen, aber nur für den Fall, und für andere Benutzer, die das hier lesen, gibt es ein schönes Flussdiagramm hier auf der UAC-Architektur hier....

http://msdn.microsoft.com/en-us/library/bb756945.aspx

Soweit ich weiß, befinden sich alle Informationen darüber, wie UAC mit einer bestimmten Anwendung funktionieren soll, im Manifest, das in der Verknüpfungsphase in die Exe oder DLL eingebettet wird.

Seit der .Net-Änderung müssen auch Nicht-.Net-Anwendungen ein Manifest enthalten, um Windows mitzuteilen, dass sie nicht .Net sind. Alles, was in den neueren Versionen von Visual Studio erstellt wurde, oder zumindest die, die ich erstellt habe, haben eine breite Palette von UAC-Optionen im Manifest-Abschnitt der Linker-Optionen, einschließlich solcher, die es Ihnen ermöglichen, es zu deaktivieren.

0voto

ChristianWimmer Punkte 1049

Es gibt einen UAC-Klon mit Source, der auch unter XP funktioniert. Er heißt SuRun und enthält einige weitere Funktionen wie die automatische Erhöhung für bestimmte Anwendungen.

Blog und Dokumente sind auf Deutsch: http://kay-bruns.de/wp/software/surun Die deutsche Dokumentation enthält viele detaillierte Informationen: http://kay-bruns.de/download/SuRun1209.pdf

Sourceforge-Seite: http://sourceforge.net/projects/surun/ Es ist C++

0voto

Ian Boyd Punkte 232380

Die Art und Weise, wie ein Prozess in Windows gestartet wird, ist mit CreateProcess .

CreateProcess führt 3 Prüfungen durch, um festzustellen, ob die Anwendung eine Erhöhung erfordert:

  • die Anwendung bittet um eine erweiterte Ausführung ( requestedExecutionLevel=requireAdministrator )
  • eine Heuristik denkt, dass es sich bei der App um ein Installationsprogramm handeln könnte (z. B. mit dem Namen setup.exe , installer.exe , update.exe ) (die durch Gruppenrichtlinien deaktiviert werden kann)
  • AppCompat sagt, dass die Scheißanwendung erhöht werden muss

Si CreateProcess entscheidet, dass der Prozess mit Administratorrechten gestartet werden muss und der Benutzer derzeit nicht über Administratorrechte verfügt, schlägt er fehl und gibt den Fehler zurück:

ERROR_ELEVATION_REQUIRED (740)

ShellExecute weiß, wie dieser neue Fehlercode zu behandeln ist

ShellExecute ist ein übergeordneter Wrapper um CreateProcess . Es weiß, wie es mit diesem neuen Fehlercode umzugehen hat. CreateProcess .

ShellExecute ist die Funktion, die die AppInfo (Anwendungsinformationen). Der AppInfo-Dienst wird gestartet Consent.exe was die UAC-Eingabeaufforderung ist. Und es führt die Erhöhung durch.

  • wenn der Benutzer ein Administrator mit verweigerten Admin-Rechten ist, wird er zur Autorisierung aufgefordert
  • wenn der Benutzer ein Standardbenutzer ist, wird er zur Eingabe seiner Anmeldedaten aufgefordert

AppInfo startet den neuen Prozess, und ShellExecute kehrt zurück.

Fuente

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X